oracle 中的 CASE 可以作为一个选择控制语句,可以根据条件从多个分支选择相应的执行动作,内部至少存在一个分支。也可以作为表达式使用,返回一个值。
CASE 的语法格式
CASE [selector]
when 表达式1 then
执行语句1;
when 表达式2 then
执行语句2;
when 表达式3 then
执行语句3;
[else 语句序列 N]
执行语句 N;
END CASE;
declare
begin
case
when 1=1 then
raise_application_error(-20001,1);
when 2=1 then
raise_application_error(-20001,2);
when 3=1 then
raise_application_error(-20001,3);
end case;
end;
--弹出1
declare
res number:=2;
begin
case res
when 1 then
raise_application_error(-20001,1);
when 2 then
raise_application_error(-20001,2);
when 3 then
raise_application_error(-20001,3);
else
raise_application_error(-20001,0);
end case;
end;
--弹出 2
declare
res number:=5;
begin
case res
when 1 then
raise_application_error(-20001,1);
when 2 then
raise_application_error(-20001,2);
when 3 then
raise_application_error(-20001,3);
end case;
end;
--报错,ELSE 块可以省略,但没找到匹配时,就报错
使用 CASE 给变量赋值
declare
res number;
begin
res:=
case
when 1=1 then
1 --只能由一个值,且没分号
when 2=1 then
2
when 3=1 then
3
end; --END 后面没有 CASE
raise_application_error(-20001,res);
end;
--弹出1