【发布时间】:2021-02-06 07:12:17
【问题描述】:
如何为 raise_application_error 调用编写异常处理程序?我完全坚持下去。我知道如何提升和捕获自定义异常,但我不知道如何使用 raise_application_error 与其他 catch 块然后“当其他人”捕获错误。谢谢提示
【问题讨论】:
如何为 raise_application_error 调用编写异常处理程序?我完全坚持下去。我知道如何提升和捕获自定义异常,但我不知道如何使用 raise_application_error 与其他 catch 块然后“当其他人”捕获错误。谢谢提示
【问题讨论】:
这样的?
declare
no_bananas_on_tuesday exception;
pragma exception_init(no_bananas_on_tuesday, -20123);
begin
raise_application_error(-20123, 'Bananas are not available on a Tuesday');
exception
when no_bananas_on_tuesday then
dbms_output.put_line('It''s Tuesday but user requested a banana.');
end;
no_bananas_on_tuesday 与代码 -20123 关联。no_bananas_on_tuesday 异常处理程序来捕获它。【讨论】:
你可以检查sqlcode在你的“当别人时”
例如:
create or replace function square( n number) return number is
begin
if n <= 10 then
return n*n;
else
raise_application_error(-20001, 'too big');
end if;
end;
declare
myNumber number(10);
begin
myNumber := square(300);
dbms_output.put_line(myNumber);
exception
when others then
if sqlcode=-20001 then
dbms_output.put_line('beyond the limit '||sqlerrm);
else
dbms_output.put_line(sqlerrm);
end if;
end;
【讨论】: