游标的概念

            游标
游标的概念:游标是用来存放结果集的;

游标的声明和使用:

    1.声明游标 cursor cursor_name isquery_sql;
    2.打开游标 open cursor_name;
    3.提取游标 fetch cursor_name into variable_list;    
    4.关闭游标 close cursor_name;

游标的四个重要的属性:

    1.%found 检验游标成功否.有数据返回true
    2.%isopen 检验是否打开
    3.%notfound 无条件返回时 返回true 相反与found
    4.%rowcount 返回检索出来的行数


实例:
对emp表员工工资进行纳税计算

declare
  cursor cursor_emp is select e.sal ,e.ename from emp e;  
 1.声明游标 is 后是具体的sql语句 这里查询emp 的薪水和ename
  v_emp_item cursor_emp%rowtype;
 2.因为游标在这里使用的时候需要用到的是is后结果集的每条数据
 所以声明变量是游标类型 的每一行类型使用rowtype声明
  v_sal emp.sal%type;

  v_ename emp.ename%type;

  v_sal_tax number:=0;

begin
  open cursor_emp;
  3.打开游标
  loop

    fetch cursor_emp into v_emp_item;
   4.循环提取游标 给每行数据赋值
    v_sal:=v_emp_item.sal;

    v_ename:=v_emp_item.ename;
   5.将每行数据拆开给具体变量赋值
    if    

   6.判断结果集 按照条件进行计算个税
      v_sal>=800 and v_sal <1000 then
      v_sal_tax:=(v_sal-800)*0.05;
     elsif
       v_sal>=1000 and v_sal <2000 then
      v_sal_tax:=(v_sal-800)*0.1;
     elsif
       v_sal>=2000 then
      v_sal_tax:=(v_sal-2000)*0.2;

      end if;
      dbms_output.put_line(v_ename||'个税'||v_sal);

    exit when cursor_emp%notfound;
    7.注明循环停止条件 是游标拿不到数据为止        
    end loop;  

end;


结果集如下:
SMITH个税800
ALLEN个税1600
WARD个税1250
JONES个税2975
MARTIN个税1250
BLAKE个税2850
CLARK个税2450
SCOTT个税3000
KING个税5000
TURNER个税1500
ADAMS个税1100
JAMES个税950
FORD个税3000
MILLER个税1300
MILLER个税1300

最后的数据重复:修改代码为

将exit when cursor_emp%notfound; 提前到
 fetch cursor_emp into v_emp_item;之后一行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值