ORACLE中的结构控制(case语句)
1、简单的case语句会给出一个表达式,并将可能发生的结果与其做比较,如果匹配成功则执行对应的语句

2、语法:
[ <<lable_name>> ]
CASE case_operand
WHEN when_operand1 THEN
statement1;
[
WHEN when_operand2 THEN
statement1;
] .....
[
ELSE statementN
]
END CASE [ lable_name ];
3、说明:
<<lable_name>>:是一个标签,可以选择是否添加,如果添加标签,在结束case语句时候标明该标签,表明结束哪个case语句,可提高阅读性
case_operand:表达式,通常为一个变量
when_operand1:满足表达式的一种情况,如果该值与表达式的值相同,则执行statement1
ELSE:当以上所有都不满足是,执行该项

4、例:取一个随机数范围为1--5,输出该数的信息
DECLARE
STR1 NUMBER(10);
BEGIN
STR1 := DBMS_RANDOM.VALUE(1,5);
CASE STR1
WHEN 1 THEN
DBMS_OUTPUT.PUT_LINE('STR1的值是1');
WHEN 2 THEN
DBMS_OUTPUT.PUT_LINE('STR1的值是2');
WHEN 3 THEN
DBMS_OUTPUT.PUT_LINE('STR1的值是3');
WHEN 4 THEN
DBMS_OUTPUT.PUT_LINE('STR1的值是4');
ELSE
DBMS_OUTPUT.PUT_LINE('STR1的值是5');
END CASE;
END;

5、代码解析:
第2行:声明一个number变量为str1
第4行:给变量STR1赋一个1-5的随机值
第5--14行:与第六行匹配,则输出第七行数,再与第八行作比较,如果都不满足,则else

1、语法:
[<<label_name>>]
case
when boolean_expression1 then statement1 ;
when boolean_expression2 then statement2 ;
.......
[else statementn ;]
end case [label_name];

2、说明:
label_name:与简单case语句一样,为一个标签
boolean_expression1 :布尔表达式1,表达式为真,则执行then后面的statement1
3、例:取一个随机数范围为1--100,输出该数的信息
DECLARE
STR1 NUMBER(10);
BEGIN
STR1 := DBMS_RANDOM.VALUE(1,100);
CASE
WHEN STR1<=20 THEN
DBMS_OUTPUT.PUT_LINE('STR1的值是小于等于20');
WHEN STR1>20 and STR1<=40 THEN
DBMS_OUTPUT.PUT_LINE('STR1的值大于20且小于等于40');
WHEN STR1>40 and STR1<=60 THEN
DBMS_OUTPUT.PUT_LINE('STR1的值大于40且小于等于60');
WHEN STR1>60 and STR1<=80 THEN
DBMS_OUTPUT.PUT_LINE('STR1的值大于60且小于等于80');
ELSE
DBMS_OUTPUT.PUT_LINE('STR1的值大于80');
END CASE;
END;

4、代码解析:
第2行:声明一个number变量为str1
第4行:给变量STR1赋一个1-100的随机值
第6行:如果满足STR1<=20,则执行第7行语句
第8--13行:与第六行一样判断。需要注意的是如果第六行语句为真,执行了第7行语句,还是会对后面的语句进行判断,如果都后面还有语句为真则同样会执行输出,如果都为假则else
