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后面的语句序列。
