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 异常。因此,为此编写一个异常处理程序也是明智的。