oracle儲存過程----case條件控制語句的用法
阿新 • • 發佈:2018-12-18
oracle儲存過程—-case條件控制語句的用法
今天又看到了另一種條件控制的方法case
。
case語句可以分為兩種型別:
- 一種是簡單的case語句,它給出一個表示式,並把表示式結果同提供的幾個可預見的結果作比較,如果比較成功,則執行對應的語句序列。
- 另一種是搜尋式的case語句。它會提供多個布林表示式,然後選擇第一個為true的表示式,執行對應的指令碼。
1.簡單case語句
簡單case的語法如下:
create or replace procedure test_case_procedure(idnum varchar)
as
v_ly_ds ly_ds %rowtype;
begin
select * into v_ly_ds from ly_ds where id=idnum;
case v_ly_ds.ly_nb
when '女' then
dbms_output.put_line('女人');
when '男' then
dbms_output.put_line('男人');
else
dbms_output.put_line('人妖');
end case;
end;
分別輸入 1
、2
呼叫後的結果如下:
匿名塊已完成
男人
匿名塊已完成
女人
從上邊來看,case
的簡單語法如下:
case 標誌
when 引數1 then
語句塊1;
when 引數2 then
語句塊2;
else
語句塊3;
end case;
執行過程中是,從上到下,依次拿when
後邊的引數,分別與上邊的標誌
進行比較,相等
則進入。
另外,上邊的else
如果不寫,假如沒有符合條件的when
,則會丟擲CASE_NOT_FOUND
異常。
2.搜尋式case語句
搜尋式case與簡單式差不多,只不過是搜尋式的這種,case後邊是沒有引數的。
將上邊的例子,修改後如下,即是搜尋式case:
create or replace procedure test_case_procedure(idnum varchar)
as
v_ly_ds ly_ds%rowtype;
begin
select * into v_ly_ds from ly_ds where id=idnum;
case
when v_ly_ds.ly_nb='女' then
dbms_output.put_line('女人');
when v_ly_ds.ly_nb='男' then
dbms_output.put_line('男人');
else
dbms_output.put_line('人妖');
end case;
end;
執行過程與上邊相同。
從上邊來看,搜尋式的case語法如下:
case
when 條件1 then
語句塊1;
when 條件2 then
語句塊2;
else
語句塊3;
end case;
執行過程中是,從上到下,依次看when
後邊的條件是否為true
,true
則進入。
另外,上邊的else
如果不寫,假如沒有符合條件的when
,也會丟擲CASE_NOT_FOUND
異常。