題目:
捕獲除數為零的錯誤("ora-01476: divisor is equal to zero")並且在這種情況下顯示 "bad division"
所有的其他異常都必須原封不動地傳播到呼叫塊
換句話說,如果我加入下列異常處理部分然後執行如下**塊:
begin
plch_proc (0);
plch_proc (-1);
exception
when others
then
dbms_output.put_line ('all handled');
end;
/
隨後我應該在螢幕上看到如下輸出:
bad division
all handled
(a)
exception
when 'ora-01476'
then
dbms_output.put_line ('bad division');
(b)exception
when zero_divide
then
dbms_output.put_line ('bad division');
(c)exception
when others
then
if sqlcode = -01476
then
dbms_output.put_line ('bad division');
else
raise;
end if;
(d)exception
when others
then
if sqlcode = 1476
then
dbms_output.put_line ('bad division');
end if;
(e)exception
when others
then
if sqlcode = -1476
then
dbms_output.put_line ('bad division');
end if;
答案:
選擇:bc
a: 語法錯誤,when後面必須跟著已定義好的異常,可以是系統定義或自定義
b: zero_divide是系統定義異常
c: 通過when others捕獲了所有異常並對其中一種錯誤**進行處理,其他的繼續丟擲,所以上層還能捕獲到其他異常
d: 錯誤**寫得不對
sqlcode一般返回負數,處理這幾種情況:
① 沒有異常(返回0)
② 使用者自定義異常而且沒有用exception_init和乙個錯誤**關聯
此時返回1使用者自定義異常而且沒有用exception_init和乙個錯誤**關聯(此時返回1)
③ no_data_found(sqlcode返回100)
e: 和c的區別是沒有用raise繼續丟擲,所以上層無法捕獲
PL SQL每日一題 含有NULL的IF條件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 ...
PL SQL每日一題 含有NULL的IF條件
哪些選項在執行之後會顯示 hello earth a declare l total number l name varchar2 10 pl sql begin if l name pl sql or l total 100 then dbms output.put line hello eart...
PL SQL每日一題 含有NULL的IF條件
哪些選項在執行之後會顯示 hello earth a declare l total number l name varchar2 10 pl sql begin if l name pl sql or l total 100 then dbms output.put line hello eart...