Oracle之判断

判断

判断 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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值