关于游标cursor、游标引用 ref cursor

 
游标 cursor:查询返回的结果集  



1、静态游标,与定义好的查询关联;

   a、显式游标
      type t_type is record(                      --    定义保存结果的类型
                       pk     t.pk%type
                      ,name1  t.name1%type
                      ,name2  t.name2%type
                      );
      v_t t_type;                                 --    定义结果变量,行记录。当然也可以不这样定义,而一个个指定字段变量。
  
      cursor c for select * from t where pk=1;    --    静态游标:1、定义游标
      open c;                                     --    静态游标:2、打开游标
      fetch c into v_t;                           --    
      while c%FOUND loop                          --    静态游标:3、遍历游标   
          fetch c into v_t;
          [ some DML ... with v_t.pk,v_t.name1,v_t.name2 ... ]
      end loop;
      close c;                                    --    静态游标:4、关闭游标  
      
      
   b、隐式游标
      for x in (select * from t where pk=t) loop  --    隐式游标,相对于显示游标,结构简单,推荐使用
          [ some DML ...with x.pk,x.name1,x.name2 ... ]
      end loop;


2、动态游标:ref cursor 查询语句可以动态指定

   a、弱类型游标
      type refcur_t is ref cursor;                                  --   弱游标类型定义不指定具体的返回类型

      refcur  refcur_t;                                             --   弱游标变量
      ----  使用方式同显示静态游标: 
      open refcur for select ... ;                                  --   关联查询(可以多次关联不同的查询)
      fetch refcur into ... 
      while refcur%FOUND loop
          ...
      end loop;
      close refcur;
      ----

   b、强类型游标
      type emp_refcur_t is ref cursor return employees%rowtype;     --   指定返回类型 

      使用方式同上





 

  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值