Oracle中的判断构造
介绍
在任何计算机语言(c,java,pascal)都有各种控制语句(条件语句、循环语句、顺序控制结构...)在pl/sql中也存在这样的控制结构。
1.条件分支语句
pl/sql中提供了三种条件分支语句:if-then,if-then-else,if-then-elsif-else
简单的条件判断if-then
?编写一个过程,可以输入一个雇员名,如果该雇员的工资低于2000,就给该雇员工资增加10%
--输入一个雇员名,如果该雇员的工资低于2000,就给该雇员工资增加10%
create or replace procedure sun_pro6(sunName varchar2) is
--定义工资变量
v_sal emp.sal%type;
begin
--执行部分
select sal into v_sal from kkkk where ename=sunName;
--判断
if v_sal<2000 then
update kkkk set sal=sal*1.1 where ename=sunName;
end if;
end;
2.二重条件分支 if-then-else
?编写一个过程,可以输入一个雇员名,如果该雇员的补助不是0就在原来的基础上增加100;如果补助为0就把补助设为200;
--可以输入一个雇员名,如果该雇员的补助不是0就在原来的基础上增加100
;如果补助为0就把补助设为200;
create procedure sun_pro7(sunName varchar2) is
--定义
v_comm emp.comm%type;
begin
--执行
select comm into v_comm from kkkk where ename=sunName;
--判断补助是否为0
if v_comm<>0 then
update kkkk set comm=comm+100 where ename=sunName;
else
update kkkk set comm=comm+200 where ename=sunName;
end if;
end;
需要注意的是<>0代表的就是不等于0
3.多重条件分支 if-then-elsif-else
?编写一个过程,可以输入一个雇员编号,如果该雇员的职位是PRESIDENT就给他的工资增加1000,如果该雇员的职位是MANAGER就给他的工资增加500,其它职位的雇员工资增加200
SQL> --输入一个雇员编号,如果该雇员的职位是PRESIDENT就给他的工资增加1000,如果该雇员的职位是MANAGER就给他的工资增加500,其它职位的雇员工资增加200
SQL> create or replace procedure sun_pro8(sunNo number) is
2 --定义
3 v_job emp.job%type;
4 begin
5 --执行
6 select job into v_job from kkkk where empno=sunNo;
7 --判断职位
8 if v_job='PRESIDENT' then
9 update kkkk set sal=sal+1000 where empno=sunNo;
10 elsif v_job='MANAGER' then
11 update kkkk set sal=sal+500 where empno=sunNo;
12 else
13 update kkkk set sal=sal+200 where empno=sunNo;
14 end if;
15 end;
16 /
Procedure creatednd;
注意:elsif这个是pl/sql里的特殊写法,不是书写错误。