热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

oracle游标cursor简单使用

oracle游标cursor简单使用总共介绍两种游标cursor与sys_refcursor1、cursor游标使用[sql]/*简单cursor游标*students表里面有name字段,你可以换做其他表测试*/--定义declare--定义游标并且赋值(...SyntaxHi

oracle游标cursor简单使用
 
总共介绍两种游标 cursor 与 sys_refcursor
 
1、cursor游标使用
[sql] 
/*简单cursor游标  
 *students表里面有name字段,你可以换做其他表测试  
 */  
--定义  
declare  
 --定义游标并且赋值(is 不能和cursor分开使用)  
 cursor stus_cur is select * from students;  
 --定义rowtype  
 cur_stu students%rowtype;  
 /*开始执行*/  
 begin  
   --开启游标  
   open stus_cur;  
      --loop循环  
      loop   
        --循环条件  
        exit when stus_cur%notfound;  
        --游标值赋值到rowtype  
        fetch stus_cur into cur_stu;  
        --输出    www.2cto.com  
        dbms_output.put_line(cur_stu.name);  
      --结束循环    
      end loop;  
    --关闭游标    
   close stus_cur;  
  /*结束执行*/  
 end;      
执行结果
 
[sql] 
SQL> declare  
  2   --定义游标并且赋值(is 不能和cursor分开使用)  
  3   cursor stus_cur is select * from students;  
  4   --定义rowtype  
  5   cur_stu students%rowtype;  
  6   /*开始执行*/  
  7   begin    www.2cto.com  
  8     --开启游标  
  9     open stus_cur;  
 10        --loop循环  
 11        loop  
 12          --循环条件  
 13          exit when stus_cur%notfound;  
 14          --游标值赋值到rowtype  
 15          fetch stus_cur into cur_stu;  
 16          --输出  
 17          dbms_output.put_line(cur_stu.name);  
 18        --结束循环  
 19        end loop;  
 20      --关闭游标  
 21     close stus_cur;  
 22    /*结束执行*/  
 23   end;  
 24  /  
   
杨过  
郭靖  
付政委  
刘自飞  
江风  
任我行  
任盈盈  
令狐冲  
韦一笑  
张无忌  
朵儿  
谢逊  
小龙女  
欧阳锋  
欧阳锋  
2、sys_refcursor游标使用
  www.2cto.com  
[sql] 
/*  
 *游标名:sys_refcursor  
 *特别注意赋值方式:for  
 *与上重复内容不在叙述  
 */  
declare  
   stu_cur sys_refcursor;  
   stuone students%rowtype;  
     
   begin  
     --这句赋值方式for  
     open stu_cur for select * from students;  
     --fetch赋值给rowtype  
     fetch stu_cur into stuone;  
       
     loop   
       dbms_output.put_line(stuone.name||' '||stuone.hobby);  
       fetch stu_cur into stuone;  
       exit when stu_cur%notfound;  
     end loop;  
   end;  
 
执行结果
 
[sql] 
SQL> /*  
  2   *游标名:sys_refcursor  
  3   *特别注意赋值方式:for  
  4   *与上重复内容不在叙述  
  5   */    www.2cto.com  
  6  declare  
  7     stu_cur sys_refcursor;  
  8     stuone students%rowtype;  
  9    
 10     begin  
 11       --这句赋值方式for  
 12       open stu_cur for select * from students;  
 13       --fetch赋值给rowtype  
 14       fetch stu_cur into stuone;  
 15    
 16       loop  
 17         dbms_output.put_line(stuone.name||' '||stuone.hobby);  
 18         fetch stu_cur into stuone;  
 19         exit when stu_cur%notfound;  
 20       end loop;  
 21     end;  
 22  /  
   
杨过 保护小龙女  
郭靖 修炼降龙十八掌  
付政委 看小人书  
刘自飞 编程写代码  
江风 编程写代码  
任我行 修炼神功  
任盈盈 游山玩水  
令狐冲 行侠仗义  
韦一笑 吸拾人雪  
张无忌 修行  
朵儿 洗浴  
谢逊 毕生研究屠龙刀  
小龙女 修炼玉女心经  
欧阳锋 看小人书  
  www.2cto.com  
补充一种循环条件
 
[sql] 
declare  
     
   stu_cur sys_refcursor;  
   stuone students%rowtype;  
     
   begin  
     open stu_cur for select * from students;  
     fetch stu_cur into stuone;  
     --特别注意循环条件的改变  
     --这个条件是发现了在循环  
     --与上一个notfound不同的  
     while stu_cur%found loop   
       dbms_output.put_line(stuone.name||' '||stuone.hobby);  
       fetch stu_cur into stuone;  
     end loop;  
   end;    
 

推荐阅读
author-avatar
娜娜的乖宝宝699
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有