Oracle PL/SQL CASE敘述

流程控制不只要會IF判斷式,還要會CASE敘述

前言

CASE敘述亦是種流程控制的應用,依照使用方式的不同可分為Simple CASE Statement以及Searched CASE Statement,相關說明如下。

Simple CASE Statement

Simple CASE Statement的使用方式比較像是撰寫其他程式所使用的Switch陳述句,語法如下

1
2
3
4
5
6
7
8
9
[<<LABEL_NAME>>]
CASE 運算元
    WHEN 1 THEN
        ......
    WHEN 2 THEN
        ......
    ELSE
        ......
END CASE [LABEL_NAME];

以下進行相關示範

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
DECLARE
    V_SCORE VARCHAR(1) := 'A';
BEGIN
    CASE V_SCORE
        WHEN 'A' THEN
            DBMS_OUTPUT.PUT_LINE('您的評分:' || V_SCORE);
        WHEN 'B' THEN
            DBMS_OUTPUT.PUT_LINE('您的評分:' || V_SCORE);
        ELSE
            DBMS_OUTPUT.PUT_LINE('輸入無效!');
    END CASE;
END;

執行結果

1
您的評分:A

Searched CASE Statement

Searched CASE Statement的使用方式跟 IF 判斷式比較接近,相關語法如下

1
2
3
4
5
6
7
8
9
[<<LABEL_NAME>>]
CASE [TRUE|FALSE]
    WHEN 布林運算式1 THEN
        ......
    WHEN 布林運算式2 THEN
        ......
    ELSE
        ......
END CASE [LABEL_NAME];

以下修改IF判斷式的範例進行相關示範

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
DECLARE
    V_AGE INT := 33;
BEGIN
    CASE
        WHEN V_AGE BETWEEN 18 AND 30 THEN
             DBMS_OUTPUT.PUT_LINE('您的年齡:' || V_AGE || ', 為青年.'); 
        WHEN V_AGE BETWEEN 31 AND 44 THEN
            DBMS_OUTPUT.PUT_LINE('您的年齡:' || V_AGE || ', 為壯年.'); 
        WHEN V_AGE BETWEEN 45 AND 59 THEN
             DBMS_OUTPUT.PUT_LINE('您的年齡:' || V_AGE || ', 為中年.'); 
        WHEN V_AGE BETWEEN 60 AND 69 THEN
            DBMS_OUTPUT.PUT_LINE('您的年齡:' || V_AGE || ', 為前期高年.'); 
        WHEN V_AGE > 69 THEN
            DBMS_OUTPUT.PUT_LINE('您的年齡:' || V_AGE || ', 為老年.');
        ELSE
            DBMS_OUTPUT.PUT_LINE('您的年齡:' || V_AGE || ', 尚未成年.'); 
    END CASE;
END;

執行結果

1
您的年齡:33, 為壯年.