当需要执行多重分支操作时,使用case语句更简洁,且执行效率更高。
使用case语句又2种方式,第一种是使用单一选择符进行等值比较,第二种是使用多种提交进行非等值比较
使用单一选择符进行等值比较:
例如:
declare
v_no int:=&no;
v_sal emp.sal%type;
v_name emp.ename%type;
begin
select sal,ename into v_sal,v_name from emp where emp.empno=v_no;
case v_sal
when 1000 then
dbms_output.put_line(v_name||'的工资是'||v_sal);
when 2000 then
dbms_output.put_line(v_name||'的工资是'||v_sal);
when 3000 then
dbms_output.put_line(v_name||'的工资是'||v_sal);
when 4000 then
dbms_output.put_line(v_name||'的工资是'||v_sal);
when 5000 then
dbms_output.put_line(v_name||'的工资是'||v_sal);
else
dbms_output.put_line('不在范围内');
end case;
end;
使用多种提交进行非等值比较
例如:
declare
v_no int:=&no;
v_sal emp.sal%type;
v_name emp.ename%type;
begin
select sal,ename into v_sal,v_name from emp where emp.empno=v_no;
case
when v_sal<1000 then
update emp set sal=sal*0.1 where empno=v_no;
when v_sal<2000 then
update emp set sal=sal*0.2 where empno=v_no;
when v_sal<3000 then
update emp set sal=sal*0.3 where empno=v_no;
when v_sal<4000 then
update emp set sal=sal*0.4 where empno=v_no;
when v_sal<5000 then
update emp set sal=sal*0.5 where empno=v_no;
else
dbms_output.put_line('不在范围内');
end case;
end;