PL/SQL 函数在循环后停止 运行
PL/SQL function stops running after loop
我觉得这段代码一整天都在工作,但突然之间它不再工作了,我似乎找不到解决方案。
这个循环在一个大函数里面,所以我只会post这个:
FOR i in 0..t_strGroups.count
LOOP
newStudentNumber := newStudentNumber || t_strGroups(i) || ' ';
dbms_output.put_line(newStudentNumber); -- this outputs fine
END LOOP;
dbms_output.put_line('test'); --this line doesn't output
在测试函数停止工作的地方时,我发现在这个循环之后我无法再输出行。有谁知道这里可能发生了什么?
提前致谢!
经过进一步思考,我找到了答案。
在循环中,我从 0 循环到 t_strGroups.count。因为我的集合的第一个位置是 0。但是 collection.count
returns 集合中值的数量。
我的集合中有 5 个值,因此 collection.count
returns 5。但是,我集合中的最后一个值的位置为 4。因此,当循环到达迭代 5 时,代码将崩溃。由于第5位不存在
我想忽略这一点是我的愚蠢行为。我考虑过删除这个问题。但是我决定post这个答案。也许有一天它可以帮助某人!
编辑:
根据 Jeffrey Kemp 的评论,代码不会崩溃,但会引发 NO_DATA_FOUND 异常。因此,为此编写一个异常处理程序也是明智的。
我觉得这段代码一整天都在工作,但突然之间它不再工作了,我似乎找不到解决方案。
这个循环在一个大函数里面,所以我只会post这个:
FOR i in 0..t_strGroups.count
LOOP
newStudentNumber := newStudentNumber || t_strGroups(i) || ' ';
dbms_output.put_line(newStudentNumber); -- this outputs fine
END LOOP;
dbms_output.put_line('test'); --this line doesn't output
在测试函数停止工作的地方时,我发现在这个循环之后我无法再输出行。有谁知道这里可能发生了什么?
提前致谢!
经过进一步思考,我找到了答案。
在循环中,我从 0 循环到 t_strGroups.count。因为我的集合的第一个位置是 0。但是 collection.count
returns 集合中值的数量。
我的集合中有 5 个值,因此 collection.count
returns 5。但是,我集合中的最后一个值的位置为 4。因此,当循环到达迭代 5 时,代码将崩溃。由于第5位不存在
我想忽略这一点是我的愚蠢行为。我考虑过删除这个问题。但是我决定post这个答案。也许有一天它可以帮助某人!
编辑: 根据 Jeffrey Kemp 的评论,代码不会崩溃,但会引发 NO_DATA_FOUND 异常。因此,为此编写一个异常处理程序也是明智的。