This question提出了一个非常有趣的观点;在Oracle文档中,关于在获取后%NOTFOUND
是否可能为null似乎存在矛盾。是吗?
引用11g documentation
该文档似乎直接自相矛盾,因为它也表示以下内容,这意味着在获取%NOTFOUND
之后不能为空。
10g documentation也有类似的警告,这不一定是直接的矛盾,因为它警告为获取此行为可能无法成功执行获取操作。
在什么情况下,执行获取后,获取可能会失败,或者%NOTFOUND
返回null?
最佳答案
我发现一种提取可能失败的情况:
declare
i integer;
cursor c is
select 1 / 0 from dual;
begin
open c;
begin
fetch c
into i;
exception
when others then
dbms_output.put_line('ex');
end;
if c%notfound is null then
dbms_output.put_line('null');
elsif c%notfound then
dbms_output.put_line('true');
else
dbms_output.put_line('false');
end if;
close c;
end;
但这只会使您的问题更强,因为无论在10g还是11g中,它都将评估为null……