plsql_case when_end case學習小例

wisdomone1發表於2010-08-17

SQL> r
  1  declare
  2  i integer:=0;
  3  begin
  4  case
  5   when(i<0) then i:=1;
  6   when(i>1 and i<10) then i:=8;
  7  end case;
  8  dbms_output.put_line(i);
  9* end;
declare
*
ERROR at line 1:
ORA-06592: CASE not found while executing CASE statement  ---出現這個oracle錯誤,說明 case條件一個也不符合,下列的plsql可以抓取這個異常case_not_found
ORA-06512: at line 4

 

 

SQL> r
  1  declare
  2  i integer:=0;
  3  begin
  4  case
  5   when(i<0) then i:=1;
  6   when(i>1 and i<10) then i:=8;
  7  end case;
  8  dbms_output.put_line(i);---正常情況,列印這個變數i的值
  9  exception  --exception語法 exception when 異常名字 then 動作;
 10    when case_not_found then
 11    dbms_output.put_line(i); --抓取這個異常,並列印這個變數i值
 12* end;
0

PL/SQL procedure successfully completed.

SQL>

 

---在plsql中(宣告部分定義一個過程或者函式,並在plsql主體內呼叫宣告部分定義的過程或函式);這是另一種plsql 中case when end case的語法
SQL> r
  1  declare
  2  dname test.dname%type;
  3  procedure p_print(s varchar2) is
  4  begin
  5   dbms_output.put_line(s);
  6  end;
  7  begin
  8  dname:='it';
  9  case dname  --變數名稱
 10   when 'worker' then p_print('worker');  --when後跟變數的值,注意這是一個比較值
 11   when 'it' then p_print('it');
 12   when 'mark' then p_print('mark');
 13   else   p_print('none');--若以上when皆不滿足,採用else的動作
 14  end case;
 15* end;
it

PL/SQL procedure successfully completed.

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-671198/,如需轉載,請註明出處,否則將追究法律責任。

相關文章