分支语句if、case...when

分支语句主要有两类种:IF语句、CASE语句。这两种语句都是需要进行条件的判断。

IF语句
IF 判断条件 THEN
满足条件时执行语句 ;
END IF ;
IF…ELSE语句
IF 判断条件 THEN
满足条件时执行的语句 ;
ELSE不满足条件时执行的语句 ;
END IF ;
IF…ELSEIF…ELSE语句
IF 判断条件1 THEN
满足条件1时执行的语句 ;
ELSIF 判断条件2 THEN
满足条件2时执行的语句 ;

ELSE所有条件不满足条件时执行的语句 ;
END IF ;

例题:
查询emp表的工资,输入员工编号,根据编号查询工资,如果工资高于3000元,则显示高工资,如果工资大于2000元,则显示中等工资,如果工资小于2000元,则显示低工资。
declare
v_sal emp.sal%type;
v_empno emp.empno%type;
begin
v_empno:=&empno;
select sal into v_sal from emp where empno=v_empno;
if v_sal>3000
then DBMS_OUTPUT.put_line(‘高工资’);
elsif v_sal>2000
then DBMS_OUTPUT.put_line(‘中等工资’);
else DBMS_OUTPUT.put_line(‘低工资’);
end if;
end;

用户输入一个雇员编号,根据它所在的部门给上涨工资,规则:
10部门上涨10%,20上涨20%,30上涨30%;
但是要求最高不能超过5000,超过5000就停留在5000。
declare
v_empno emp.empno%type;
v_sal emp.sal%type;
v_deptno emp.deptno%type;
begin
v_empno:=&empno;
select deptno,sal into v_deptno,v_sal from emp where empno=v_empno;
if v_deptno=10
then v_sal:=v_sal1.1;
elsif v_deptno=20
then v_sal:=v_sal
1.2;
elsif v_deptno=30
then v_sal:=v_sal*1.3;
else null;
end if;
if v_sal>5000
then v_sal:=5000;
else v_sal:=v_sal;
end if;
update emp set sal=v_sal where empno=v_empno;
end;

CASE语句
CASE [变量]
WHEN [值 | 表达式] THEN
执行语句块 ;
WHEN [值 | 表达式] THEN
执行语句块 ;
WHEN [值 | 表达式] THEN
执行语句块 ;
ELSE
条件都不满足时执行语句块;
END CASE ;

例题:
输入雇员编号,根据雇员的职位进行工资提升,提升要求如下
如果职位是办事员(CLERK),工资增长5%;
如果职位是销售人员(SALESMAN),工资增长8%;
如果职位为经理(MANAGER),工资增长10%;
如果职位为分析员(ANALYST),工资增长20%;
如果职位为总裁(PRESIDENT),工资不增长。
declare
v_empno emp.empno%type;
v_job emp.job%type;
v_sal emp.sal%type;
begin
v_empno:=&empno;
select job,sal into v_job,v_sal from emp where empno=v_empno;
case
when v_job=‘CLERK’
then v_sal:=v_sal1.05;
when v_job=‘SALESMAN’
then v_sal:=v_sal
1.08;
when v_job=‘MANAGER’
then v_sal:=v_sal1.1;
when v_job=‘ANALYST’
then v_sal:=v_sal
1.2;
when v_job=‘PRSEIDENT’
then v_sal:=v_sal;
end case;
update emp set sal=v_sal where empno=v_empno ;
end;

猜你喜欢

转载自blog.csdn.net/bigdata_zx/article/details/83349156