oracle的控制结构
控制结构(其中goto语句了解)
a)条件语句 if---then/if--then--else/if--then--eslif--then
例子1):编写一个过程,可以输入雇员名,如果该雇员工资低于2000,就给该雇员增加工资10%
---------------------------------------------------------------------------
SQL>create or replace procedure p(pName varchar2) is
v_sal emp.sal%type;--定义变量%type指的是让sal的类型和v_sal相同
begin www.2cto.com
select sal into v_sal from emp where ename = pName;
if v_sal<2000 then
update emp set sal = sal + sal*10% where ename = pName;
end if;
end;
/
SQL>exec p('arthur');
---------------------------------------------------------------------------
例子2):编写一个过程,可以输入一个雇员名,入股雇员的补助comm不是零,就在原来的基础上加100,否则设置为200
---------------------------------------------------------------------------
SQL>create or replace procedure p1(pName varchar2) is
v_comm emp.comm%type;--定义变量%type指的是让sal的类型和v_sal相同
begin
select comm into v_comm from emp where ename = pName;
if v_comm<>0 then
update emp set comm = comm + 100 where ename = pName;
else
update emp set comm = 200 where ename = pName;
end if;--始终放在最后
end;
/
SQL>exec p('arthur');
--------------------------------------------------------------------------- www.2cto.com
例子3):编写一个过程,可以输入一个雇员编号,如果该雇员的职位是PRESIDENT,就给他的工资增加1000,如果职位是
MANAGER,工资就增加500,其它职位工资增加200
SQL>create or replace procedure p2(pNo number) is
v_job emp.job%type;
begin
select job into v_job from emp where empno = pNo;
if v_job = 'PRERENT' then
update emp set sal = sal + 1000 where empno = pNo;
elsif v_job = 'MANAGER' then
update emp set sal = sal + 500 where empno = pNo;
else
update emp set sal = sal + 200 where empno = pNo;
end if;--一定要加上
end;
/
---------------------------------------------------------------------------
b)循环语句 www.2cto.com
i)loop...end loop 这种循环至少被循环一次
例子1): 编写一个过程,可输入用户名,并添加10个用户到users表中,用户标号id从1开始增加
---------------------------------------------------------------------------
SQL>create or replace procedure p3(pName varchar2) is
v_num number := 1;--控制循环的变量,初始值为1
begin
loop
insert into users values(v_num,pName);
--判断是否循环十次
exit when v_num = 10;
v_num := v_num + 1;--自增1
end loop
end;
/
SQL>exec p3('arthur');
---------------------------------------------------------------------------
ii):while 循环,以whlie....loop开始,以end loop结束
例子1):编写一个过程,可输入用户名,并添加10个用户到users表中,用户标号id从11开始增加 www.2cto.com
------------------------------------------------------