oracle存储过程的编写

编写一个过程 可以输入一个雇员名,如果该雇员的工资低于2000 就加上10%
create or replace procedure pro06(v_name varchar2) is

v_sal emp.sal%type

begin

select sal into v_sal from emp where ename=v_name;

if v_sal<2000 then

update emp set sal=sal+sal*10% where name=v_name;

end if;

end;


输入一个雇员名 如果补助不是0 就在原先基础上加上100;如果为0就设为200
create or replace procedure pro07(v_name varchar2) is

v_comm emp.comm%type

begin

select comm into v_comm from emp where ename=v_name;

if v_comm<>0 then

update emp set comm=comm+100 where name=v_name;

else

update emp set comm=comm+200 where name=v_name;

end if;

end;


输入一个雇员编号 如果职位是president 工资加1000;
如果是manager 工资加500; 其他 工资加200

create or replace procedure pro08(v_no number) is

v_job emp.job%type

begin

select job into v_job from emp where empno=v_no;

if v_job='PRESIDENT' then

update emp set sal=sal+1000 where empno=v_no;

else if v_job='MANAGER' then

update emp set sal=sal+500 where empno=v_no;

else

update emp set sal=sal+200 where empno=v_no;

end if;

end;


循环语句 loop

循环添加10个用户

create or replace procedure pro09(v_name varchar2) is

v_num number:=1;

begin

loop
    
     insert into users values (v_num,v_name);
     
     exit when v_num=10;
 
     v_num:=v_num+1;

end loop;

end;


循环语句while

添加10个用户 从编号11开始

create or replace procedure pro10(v_name varchar2) is

v_num number:=11;

begin

while v_num<20 loop

insert into users values (v_num,v_name);

v_num:=v_num+1;

end loop;

end;


goto语句是可以直接跳转
null语句不会执行任何操作,并且会直接将控制传递到下一条语句
使用null的好处是可以提高pl/sql的可读性


自定义例外

create or replace procedure ex_test(v_no number) is

myex exception;

begin
 
update emp set sal=sal+1000 where empno=v_no;

if sql%notfound then --没有正常update

raise myex;--触发例外

end if;

exception

when myex then

dbms_output.put_line('没有此用户!');

end;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值