判断
判断 if
语法:
declare
begin
if 条件1 then //当满足条件1时要执行的代码条件和where后面一样
elsif 条件2 then //满足条件2要执行的代码
.
elsif 条件n then //当满足条件n要执行的代码
else
当不满足以上所有条件要执行代码
end if;if开头,end if结束
end;
注意:当满足任意一个条件时,立即执行相应的代码,然后直接end if退出判断
例题:键盘输入一个整数
1-10输出小于10
11-20输出小于20
21-50输出小于50
其余输出大于50
declare
v_a number:='&输入';
begin
if v_a between 1 and 10 then
dbms_output.put_line('小于10');
elsif v_a between 11 and 20 then
dbms_output.put_line('小于20');
else
dbms_output.put_line('大于50');
end if;
end;
练习
键盘输入一个员工编号,如果该员工工资小于2000输出小于两千
如果<3000输出小于三千
<5000 输出小于5000
其余显示 大于五千
Declare
v_empno emp.empno%type:='&请输入';
v_sal emp.sal%type;
Begin
select sal into v_sal from emp where empno=v_empno;
if v_sal between 0 and 2000 then dbms_output.put_line('小于两千');
elsif v_sal between 2001 and 3000 then dbms_output.put_line('小于三千');
elsif v_sal between 3001 and 5000 then dbms_output.put_line('小于五千');
else dbms_output.put_line('五千以上');
End if;
End;
练习
写一个程序块,手动输入一个员工编号
如果该员工是30号部门则给该员工涨薪3%
如果该员工是20号部门则给该员工涨薪2%
如果该员工是10号部门则给该员工涨薪1% update
declare
v_empno emp.empno%type:='&员工编号';
v_sal emp.sal%type;
v_deptno emp.deptno%type;
begin
select deptno into v_deptno from emp where empno=v_empno;
if v_deptno=30 then update emp set sal=(sal+nvl(comm,0))*1.03 where empno=v_empno
returning sal into v_sal;
dbms_output.put_line('部门'||v_deptno||'工资'||v_sal);
elsif v_deptno=20 then update emp set sal=(sal+nvl(comm,0))*1.02 where empno=v_empno
returning sal into v_sal;
dbms_output.put_line('部门'||v_deptno||'工资'||v_sal);
elsif v_deptno=10 then update emp set sal=(sal+nvl(comm,0))*1.01 where empno=v_empno
returning sal into v_sal;
dbms_output.put_line('部门'||v_deptno||'工资'||v_sal);
end if;
end;
练习3
输入一个员工编号 判断工资等级
工资等级是1 输出小
工资等级是2-3 输出中
工资等级是4 输出大
其他输出 超大
declare
v_grade salgrade.grade%type;
v_empno emp.empno%type:='&员工编号';
begin
select grade into v_grade from emp left join salgrade on sal between losal and hisal where empno=v_empno;
if v_grade=1 then dbms_output.put_line('小');
elsif v_grade between 2 and 3 then dbms_output.put_line('中');
elsif v_grade=4 then dbms_output.put_line('大');
else dbms_output.put_line('超大');
end if;
end;
练习
输入一个员工号,如果是经理(MANAGER)则输出经理
如果是其他则输出相应的职位 SALESMAN
declare
v_empno emp.empno%type:='&员工号';
v_job emp.job%type;
begin
select job into v_job from emp where empno=v_empno;
if v_job='MANAGER' then dbms_output.put_line('经理');
else dbms_output.put_line(v_job);
end if;
end;
练习
输入一个部门编号,该部门的平均工资大于2000则打印高收入人群
小于两千 则打印小于两千并且给该部门所有员工资工加1000
declare
v_avg number(7,2);
v_deptno emp.deptno%type:='&部门编号';
v_sal emp.sal%type;
begin
select avg(sal) into v_avg from emp where deptno=v_deptno;
if v_avg>2000 then dbms_output.put_line('高收入人群');
elsif v_avg<2000 then dbms_output.put_line('小于两千');
update emp set sal=sal+1000 where deptno=v_deptno;
end if;
end;