我有一个包含两个游标循环的触发器,一个嵌套在另一个游标循环中:
FOR outer_rec IN outer_cursor
LOOP
FOR inner_rec IN inner_cursor
LOOP
-- Do some calculations
END LOOP;
END LOOP;
在此处的某处,它会抛出以下错误:
ORA-01422:精确提取返回超过请求的行数
我一直试图确定它来自哪里一个小时左右..但是这个错误应该永远不会发生吗?
另外..我假设内部循环自动关闭,每次外循环进入下一条记录时再次打开,我希望这是正确的。
答案 0 :(得分:1)
据我所知,只有在PL / SQL块中有ORA-01422
语句时才会触发SELECT...INTO
,其中select语句获取的行数超过1行。请记住,SELECT..INTO
只能获取一行,如果获取了多行,则会引发上述异常。
答案 1 :(得分:0)
您还可以在UPDATE语句中获取1422,该语句为其值执行SELECT。
您是否没有获得带有行号的堆栈跟踪?
答案 2 :(得分:0)
我正在调用一个具有OUT变量的存储过程,并且当它尝试使用out变量时,会发生此错误。