PL/SQL中关于条件控制的关键字有IF-THEN、IF-THEN-ELSE、IF-THEN-ELSIF和多分枝条件CASE。

    IF-THEN IF-THEN-ELSE IF-THEN-ELSIF CASE
    IF 条件 THEN
    —条件结构体
    END IF;
    IF 条件 THEN
    —条件成立结构体
    ELSE
    —条件不成立结构体
    END IF;
    IF 条件1 THEN
    —条件1成立结构体
    ELSIF 条件2 THEN
    —条件2成立结构体
    ELSE
    —以上条件都不成立结构体
    END IF;
    CASE [selector]
    WHEN 表达式1 THEN 语句序列1;
    WHEN 表达式2 THEN 语句序列2;
    WHEN 表达式3 THEN 语句序列3;
    ……
    ELSE 语句序列N;
    END CASE;

    Ø IF-THEN
    该结构先判断一个条件是否为TRUE,条件成立则执行对应的语句块。
    ①用IF关键字开始,END IF关键字结束,注意END IF后面有一个分号。
    ②条件部分可以不使用括号,但是必须以关键字THEN来标识条件结束,如果条件成立,则执行THEN后到对应END IF之间的语句块内容。如果条件不成立,则不执行条件语句块的内容。
    ③条件可以使用关系运算符合逻辑运算符。
    ④在PL/SQL块中可以使用事务控制语句,该COMMIT同时也能把PL/SQL块外没有提交的数据一并提交,使用时需要注意。

    Ø IF-THEN-ELSE
    把ELSE与IF-THEN连在一起使用,如果IF条件不成立则执行就会执行ELSE部分的语句。

    Ø IF-THEN-ELSIF
    PL/SQL中的再次条件判断中使用关键字ELSIF。

    【例】查询JAMES的工资,如果大于1500元,则发放奖金100元,如果工作大于900元,则发奖金800元,否则发奖金400元。

    代码演示:IF-THEN-ELSIF应用

    DECLARE
    NEWSAL EMP.SAL %TYPE;
    BEGIN
    SELECT SAL INTO NEWSAL FROM EMP WHERE ENAME =’JAMES’;
    IF NEWSAL >1500THEN
    UPDATE EMP SET COMM =1000WHERE ENAME =’JAMES’;
    ELSIF NEWSAL >900 THEN
    UPDATE EMP SET COMM =800WHERE ENAME =’JAMES’;
    ELSE
    UPDATE EMP SET COMM =400WHERE ENAME =’JAMES’;
    ENDIF;
    END;

    Ø CASE
    CASE是一种选择结构的控制语句,可以根据条件从多个执行分支中选择相应的执行动作。
    如果存在选择器selector,选择器selector与WHEN后面的表达式匹配,匹配成功就执行THEN后面的语句。如果所有表达式都与selector不匹配,则执行ELSE后面的语句。
    如果不使用CASE中的选择器,直接在WHEN后面判断条件,第一个条件为真时,执行对应THEN后面的语句序列。