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;

 

posted @ 2016-08-23 10:12  小德cyj  阅读(6044)  评论(0编辑  收藏  举报