条件控制语句 - IF
注意事项:
- 每一个IF都要有一个匹配的END IF
- END IF 之间有空格
- 关键字ELSIF 中间没有 E
- 只在关键字END IF 后使用分号(;)
- IF 语句可嵌套
- 支持短路求值
IF THEN END IF;
语法格式:
IF condition
THEN
... 可执行语句...
END IF;
condition的结果可为TRUE, FALSE , NULL。为TRUE 时执行THEN后的语句;FASLE和NULL不执行。
IF THEN ELSE END IF;
语法格式:
IF condition
THEN
... TRUE sequence of executable statements ...
ELSE
... FALSE/NULL sequence of executable statements...
END IF;
IF THEN ELSIF ELSE END IF;
语法格式:
IF condition - 1
THEN
.... statements - 1...
ELSIF condition - 2
THEN
... statements - 2 ...
[
...
ELSIF condition - n
THEN
... statements - n ...
ELSE
else statements
]
END IF;
条件控制语句 - CASE
简单的CASE语句
语法结构:
CASE expression
WHEN result1 THEN
statement1
WHEN result2 THEN
statement2
... ...
ELSE
statement else
END CASE;
搜索型CASE语句
一个搜索型CASE语句会对一系列的布尔表达式求值,一旦某个表达式求值结果为TRUE,就会执行和这个表达式关联的一系列语句。
语法格式为:
CASE
WHEN expression1 THEN
statement1
WHEN expression2 THEN
statement2
...
ELSE
statement else
END CASE;
即使有多个表达式结果为TRUE,也只有第一个表达式关联的语句会被执行
CASE表达式
语法格式:
简单的CASE表达式 :=
CASE expression
WHEN result1 THEN
result_expression1
WHEN result2 THEN
result_expression2
...
ELSE
result_expression_else
END;
搜索型的CASE表达式 :=
CASE
WHEN expression1 THEN
result_expression1
WHEN expression2 THEN
result_expression2
...
ELSE
result_expression_else
END;
CASE表达式只返回单独的一个值,这个值就是被选中的 result_expression 表达式的执行结果。每一个WHEN字句都必须精确地关联一个表达式(而不是语句)。CASE表达式使用一个END关键字作为结束。
例如:
DECLARE
sa1ary NUMBER : = 20000;
emp1oyee_id NUMBER : = 36325;
bonus_amount NUMBER;
BEGIN
bonus amount : =
CASE
WHEN sa1ary >= 10000 AND sa1ary <= 20000 THEN 1500
WHEN sa1ary > 20000 AND sa1ary <= 40000 THEN 1000
WHEN sa1ary > 40000 THEN 500
ELSE 0
END • 10;
DBMS_OUTPUT . PUT_LINE(bonus_amount);
END;