oracle的控制语句if和循环语句loop while for
pl/sql的控制结构
if-then if-then-else if-then-elsif-else
案例1:编写一个过程,可以输入一个雇员名,如果该雇员的工资低于2000,就给该雇员工资增加10%
create or replace procedure mypro(spName varchar2) is v_sal emp.sal%type begin select sal into v_sal from emp where ename = spName if v_sal <2000 then update emp set sal = sal*1.1 where ename = spName end if; end;
案例2 编写一个过程,可以输入一个雇员名,如果该雇员的补助不是0就在原来的基础上加100,如果为0则改为200
create or replace procedure mypro(spName varchar2) is v_comm emp.comm%type begin select comm into v_comm from emp where ename = spName; if v_comm <> 0 then update emp set comm = comm+100 where ename = spName; else update emp set comm = comm+200 where ename = spName; end if; end;
案例3:编写一个过程,可以输入一个雇员编号人,如果该雇员的职位是president就给他的工资增加1000,如果该雇员
的职位是manager就给他的工资增加500,其他职位的雇员工资增加200.
create or replace procedure mypro(spName number) is v_job emp.job%type begin select job into v_job from emp where empno=spNo; if v_job='PRESIDENT' then update emp set sal = sal +1000 where empno = spNo; elsif v_job = 'MANAGER' then update emp set sal = sal + 500 where empno = spNo; else update emp set sal = sal + 200 where empno = spNo; end if; end;
pl/sql循环语句
loop是最简单的循环语句,这种循环语句以loop开头,以end loop结尾,这种循环至少会被执行一次
案例1 现在有一张表,表结构为用户id和用户名
create or replace procedure mypro(spName varchar2) is v_num number:=1; begin loop insert into users values(v_num,spName); --判断是否要退出循环 exit when v_num=10; v_num:=v_num+1; end loop; end;
while循环,至少要执行循环体一次,而对于while循环来说,只有条件为true时,才会执行循环语句
create or replace procedure mypro(spName varchar2) is v_num number:=11; begin while v_num <= 20 loop insert into users values(v_num,spName); v_num:=v_num+1; end loop; end;
循环语句-for循环
begin --只能按照1的步长不断增加 for i in reverse 1..10 loop insert into users values(i,'hh'); end loop; end;
作者:小德cyj
出处:http://www.cnblogs.com/dongzhuangdian
欢迎转载,希望注明出处