declare
v number;
begin
select 1
into v
from dual
where 1=2;
exception
when others then
dbms_output.put_line('A');
when no_data_found then
dbms_output.put_line('B');
end;
在执行这个我得到一个错误,但我已经读过它的地方,在例外时,如果首先放置将始终得到执行压制其他类型的异常。我在面试中被问及这个问题,而我则如上所述。可有人请确认这会给出什么样的输出
我不确定我是否理解这个问题。你说你已经执行了这个代码,并且你有错误。你不会说你得到了什么错误(我猜PLS-00370:OTHERS处理程序必须是块的异常处理程序中的最后一个)。你说你“在某处读到”这个行为会有所不同,但是你不会告诉我们你读到的是哪里。另外你还没有告诉我们你使用的是什么版本的Oracle(这种行为可能已经改变了)。鉴于此,我不确定你在问什么。 –
嗨贾斯汀,我试图在oracle 11.2g中执行它。我隐约记得我曾看到它说OTHERS如果放在第一位不会让其他异常类型执行。这就是我所能记得的。该行为可以根据oracle版本进行更改。 错误我得到 PLS-00370:其他处理程序必须是块 ORA-06550的异常处理程序中的最后一个:0行,列0: PL/SQL:编制单位分析终止 06550. 00000 - “行%s,列%s:\ n%s” *原因:通常是PL/SQL编译错误。 *操作: – redsoxlost