1

我有一个包含两个游标循环的触发器,一个嵌套在另一个内部,如下所示:

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

END LOOP;

在某处它抛出以下错误:

ORA-01422: 精确提取返回的行数多于请求的行数

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

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

4

3 回答 3

1

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

于 2010-06-14T21:20:17.820 回答
0

您还可以在对其值执行 SELECT 的 UPDATE 语句中获取 1422。

你没有得到带有行号的堆栈跟踪吗?

于 2010-06-14T21:59:25.210 回答
0

我正在调用一个具有 OUT 变量的存储过程,并且当它尝试使用 out 变量时,出现了这个错误。

于 2010-06-14T22:23:30.490 回答