以下PL / SQL按预期成功执行:
declare
myCount number;
begin
select count(*)
into myCount
from myTable
where id = 1;
end;
但是,以下内容不会反而引发此错误:
ORA-01422:精确提取返回超过请求的行数
declare
myCount number;
myId number := 1;
begin
select count(*)
into myCount
from myTable
where id = myId;
end;
从概念上讲,我理解错误的含义,但我不知道它如何适用于我的情况。我所做的就是将硬编码值移动到declare
块中的变量。当select
与完全相同的数字时,为什么会影响Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
的结果?
版本为{{1}}。
答案 0 :(得分:3)
您的系统中有些内容未在此问题中重现。如果我在本地系统中创建表myTable
,则代码将无错运行
SQL> create table myTable( id number );
Table created.
SQL> declare
2 myCount number;
3 myId number := 1;
4 begin
5 select count(*)
6 into myCount
7 from myTable
8 where id = myId;
9 end;
10 /
PL/SQL procedure successfully completed.
您发布的代码与您实际运行的代码之间是否存在差异?