Oracle基礎課程:PL/SQL條件控制case
最新學訊:近期OCP認證正在報名中,因考試人員較多請盡快報名獲取最近考試時間,報名費用請聯系在線老師,甲骨文官方認證,報名從速!
我要咨詢Oracle基礎課程:PL/SQL條件控制case,CASE是一種選擇結構的控制語句,可以根據條件從多個執行分支中選擇相應的執行動作。也可以作為表達式使用,返回一個值。類似于C#中的switch語句。語法是:
語法格式:CASE
CASE [selector] WHEN 表達式1 THEN 語句序列1; WHEN 表達式2 THEN 語句序列2; WHEN 表達式3 THEN 語句序列3; …… [ELSE 語句序列N]; END CASE; |
語法解析:
如果存在選擇器selector,選擇器selector與WHEN后面的表達式匹配,匹配成功就執行THEN后面的語句。如果所有表達式都與selector不匹配,則執行ELSE后面的語句。
案例4:輸入一個字母A、B、C分別輸出對應的級別信息。
代碼演示:CASE中存在selector,不返回值
DECLARE v_grade
CHAR(1):=UPPER('&p_grade'); ① BEGIN CASE v_grade ② WHEN 'A' THEN
dbms_output.put_line('Excellent'); WHEN 'B' THEN dbms_output.put_line('Very
Good'); WHEN 'C' THEN
dbms_output.put_line('Good'); ELSE
dbms_output.put_line('No such grade'); END CASE; END; |
代碼解析:
① & grade表示在運行時由鍵盤輸入字符串到grade變量中。
② v_grade分別于WHEN后面的值匹配,如果成功就執行WHEN后的程序序列。
CASE語句還可以作為表達式使用,返回一個值。
代碼演示:CASE中存在selector,作為表達式使用
DECLARE v_grade
CHAR(1):=UPPER('&grade'); p_grade VARCHAR(20) ; BEGIN p_grade := ① CASE v_grade WHEN 'A' THEN 'Excellent' WHEN 'B' THEN 'Very Good' WHEN 'C' THEN 'Good' ELSE 'No such grade' END;
dbms_output.put_line('Grade:' ||v_grade||',the result is '||p_grade); END; |
代碼解析:
① CASE語句可以返回一個結果給變量p_grade
PL/SQL還提供了搜索CASE語句。也就是說,不使用CASE中的選擇器,直接在WHEN后面判斷條件,第一個條件為真時,執行對應THEN后面的語句序列。
代碼演示:搜索CASE
DECLARE v_grade
CHAR(1):=UPPER('&grade'); p_grade VARCHAR(20) ; BEGIN p_grade := CASE WHEN v_grade='A' THEN 'Excellent' WHEN v_grade='B' THEN 'Very Good' WHEN v_grade='C' THEN 'Good' ELSE 'No such grade' END;
dbms_output.put_line('Grade:' ||v_grade||',the result is '||p_grade); END; |