循环

时间:2015-11-18 13:30:12

标签: oracle plsql oracle-sqldeveloper

我觉得这段代码已经整天都在工作,但突然间它再也无法工作了,我似乎无法找到解决方案。

这个循环是一个很大的功能,所以我只发布这个:

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

当测试函数停止工作的地方时,我发现在这个循环后我不能再输出行了。有谁知道这里可能发生了什么?

提前致谢!

1 个答案:

答案 0 :(得分:2)

在仔细考虑了这一点后,我找到了答案。

在循环中,我从0循环到t_strGroups.count。因为我的集合的第一个位置是0.但是history.go(-1)返回集合中的值的数量。

我的集合中有5个值,因此collection.count返回5.但是,我的集合中的最后一个值的位置为4.因此,当循环到达itteration 5时,代码将崩溃。由于第5位不存在。

我想忽略这一点只是我的愚蠢。我想要删除这个问题。但我决定发布这个答案。也许有一天它可以帮到某人!

修改 根据Jeffrey Kemp的评论,代码没有崩溃,它引发了NO_DATA_FOUND异常。因此,为此编写异常处理程序也是明智的。