在“for”游标循环中出现“太多行”错误

时间:2010-06-14 21:13:26

标签: sql oracle plsql oracle9i

我有一个包含两个游标循环的触发器,一个嵌套在另一个游标循环中:

FOR outer_rec IN outer_cursor
LOOP
  FOR inner_rec IN inner_cursor
  LOOP
     -- Do some calculations
  END LOOP;

END LOOP;

在此处的某处,它会抛出以下错误:

ORA-01422:精确提取返回超过请求的行数

我一直试图确定它来自哪里一个小时左右..但是这个错误应该永远不会发生吗?

另外..我假设内部循环自动关闭,每次外循环进入下一条记录时再次打开,我希望这是正确的。

3 个答案:

答案 0 :(得分:1)

据我所知,只有在PL / SQL块中有ORA-01422语句时才会触发SELECT...INTO,其中select语句获取的行数超过1行。请记住,SELECT..INTO只能获取一行,如果获取了多行,则会引发上述异常。

答案 1 :(得分:0)

您还可以在UPDATE语句中获取1422,该语句为其值执行SELECT。

您是否没有获得带有行号的堆栈跟踪?

答案 2 :(得分:0)

我正在调用一个具有OUT变量的存储过程,并且当它尝试使用out变量时,会发生此错误。