哪些選項在執行之後會顯示"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 earth');
else
dbms_output.put_line ('hello moon');
end if;
end;
/(b)
declare
l_total number;
l_name varchar2 (10) := 'pl/sql';
begin
if l_total > 100
then
dbms_output.put_line ('hello earth');
else
dbms_output.put_line ('hello moon');
end if;
end;
/(c)
declare
l_total number;
l_name varchar2 (10) := 'pl/sql';
begin
if l_total > 100 or l_total is null
then
dbms_output.put_line ('hello earth');
else
dbms_output.put_line ('hello moon');
end if;
end;
/(d)
declare
l_total number;
l_name varchar2 (10) := 'pl/sql';
begin
if nvl (l_total, 200) > 100
then
dbms_output.put_line ('hello earth');
else
dbms_output.put_line ('hello moon');
end if;
end;
/
答案:acd
a: 未初始化的變數為null, if條件相當於if true or null, 前面的true會導致or被忽略,整個結果還是true
b: 未初始化的變數為null, if條件裡的表示式被求值為null, **會走到else裡面去。
c: if 裡面用了is null, 結果為true
d: nvl把null變成了200, 結果為true
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每日一題 異常處理 WHEN子句
題目 捕獲除數為零的錯誤 ora 01476 divisor is equal to zero 並且在這種情況下顯示 bad division 所有的其他異常都必須原封不動地傳播到呼叫塊 換句話說,如果我加入下列異常處理部分然後執行如下 塊 begin plch proc 0 plch proc 1...