29.PLSQL中的参考游标

        在上一文中,我们介绍了使用PLSQL的显式游标,该类游标在声明之初已经和sql语句进行了绑定,属于静态的游标。而本文中我们介绍的参考游标,属于动态游标,在其声明时未绑定sql语句,而我们在使用时可以动态的绑定sql语句。

        如下,假设存在下表emp:


        现在我们利用参考游标来实现打印输出deptno为20的所有雇员的信息:

declare
  type cur_ref is ref cursor; --定义参考游标类型
  cur_emp cur_ref; --声明参考游标变量
  var_emp emp%rowtype;
begin --打印输出deptno为20的全部成员的信息 
  open cur_emp for select * from emp where deptno=20; 
  loop 
  fetch cur_emp into var_emp; 
  dbms_output.put_line('姓名:'||var_emp.ename||',薪资:'||var_emp.sal); 
  exit when cur_emp%notfound; end loop; 
  close cur_emp;
end;
/

        我们可以总结参考游标的使用步骤如下:
(1)在plsql的声明区,使用如下的格式定义参考游标类型:

type 游标类型名称 is ref cursor

(2)声明参考游标变量

(3)打开参考游标变量
open 变量名称 for sql语句

(4)利用循环变量游标

(5)关闭游标
        从上面的例子中我们可以发现,与上一文中的静态的显式游标不同,我们在使用参考游标变量时需要手动的去打开游标,因为在此时我们实现了游标个sql语句的绑定,所以在使用参考游标时,遍历游标便不能再使用for循环。
        使用参考游标的灵活之处就在用,我们可以随时随地的修改与游标绑定的sql语句,比如我们在打印出deptno为20的全部雇员信息后,再打印deptno为30的雇员信息,那么可以使用如下的方法:
declare
  type cur_ref is ref cursor;
  cur_emp cur_ref;
  var_emp emp%rowtype;
begin
  --打印输出deptno为20的全部成员的信息
  open cur_emp for select * from emp where deptno=20;
  loop 
    fetch cur_emp into var_emp;
    dbms_output.put_line('姓名:'||var_emp.ename||',薪资:'||var_emp.sal);
  exit when cur_emp%notfound;
  end loop;
  close cur_emp;
  --打印输出deptno为30的全部成员的信息
  open cur_emp for select * from emp where deptno=30;
  loop 
    fetch cur_emp into var_emp;
    dbms_output.put_line('姓名:'||var_emp.ename||',薪资:'||var_emp.sal);
  exit when cur_emp%notfound;
  end loop;
  close cur_emp;
end;
/











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值