Oracle PL/SQL学习笔记

学习oracle的笔记:

一个学习PL/SQL的实例:

应用:考察表emp中没一个员工的工资,如果工资高于4000,则征收工资20%的税;否则均征收200。将员工的员工号、姓名、税额、存在tax表中,同时,在该表中设一个message字段,对征税较高的进行特别说明。

 

SQL>declare    'declare是定义部分的开始.一个基本pl/sql块分declare(定义)、begin(可执行部分)、exeception(异常处理)三部分

    record emp%rowtype;  '定义一个名为record的变量,其类型同emp表的数据结构相同

    v_tax number(4);

    v_message char(100);

    cusor emp_cursor is  '定义一个名为emp_cursor的游标

    select * from emp;

    begin  '开始可执行部分

    open emp_cursor;  '打开游标

    <<repeat>>  '插入一个标签,名称为repeat,可在goto语句中使用;尽量避免使用goto和标签实现跳转

    fetch emp_cursor into record;  '使用游标提取数据到record

    declare

    over_sal exception;  '定义一个名为over_sal的用户自定义异常

    begin

    if record.sal>4000 then

    raise over_sal;  '如果该员工的工资高于4000,抛出over_sal异常

    else

    v_tax:=200;

    end if;

    v_message:='';

    exception  '开始异常处理部分

    when over_sal then  '截获到over_sal异常,进行如下处理

    v_message:='His sal is too high!He should pay more tax!'; 

    v_tax:=record.sal*0.2;

    when others then  '截获到非用户自定义异常,不进行处理

    null;

    end;

    insert into tax(empno,ename,tax,message)

    values(record.empno,record.ename,v_tax,v_message);

    if emp_cursor%found then  '如果游标fetch操作有结果返回,则跳转至repeat标签,循环操作。可在for循环中使用该游标,如下所示:

    goto repeat;    'FOR 变量名 IN 游标名 LOOP ... END LOOP ;

    else  '如果游标的fetch操作没有返回结果,则关闭游标

    close emp_cursor; '游标属性:%ISOPEN,%FOUND,%NOTFOUND,%ROWCOUNT

    end if;  '游标属性只能在PL/SQL中使用,不能在sql命令中使用

    end;

    /

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值