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里的特殊写法,不是书写错误。

猜你喜欢

转载自1124117571.iteye.com/blog/2287447