Oracle 遍历游标的四种方式汇总(for、fetch、while、BULK COLLECT)


本文整理自网络,侵删。

1.情景展示

  Oracle 遍历游标的四种方式(for、fetch、while、bulk collect+forall)

2.问题分析

  我们可以把游标想象成一张表,想要遍历游标,就要取到游标的每行数据,所以问题的关键就成了:如何取到行数据?

3.解决方案

  方式一:FOR 循环(推荐使用)

  变形一:遍历显式游标

/* 如果是在存储过程外使用显式游标,需要使用DECLARE关键字 */
DECLARE
  /*创建游标*/
  CURSOR CUR_FIRST_INDEX IS
    SELECT A.ID        A_ID, --一级指标ID
           A.INDEXNAME A_INDEXNAME --一级指标名称
      FROM INDEX_A A
     ORDER BY A_ID;
  /*定义游标变量,该变量的类型为基于游标CUR_FIRST_INDEX的行记录*/
  ROW_CUR_FIRST_INDEX CUR_FIRST_INDEX%ROWTYPE;
/*游标处理*/
BEGIN
  /*遍历显式游标*/
  --FOR 循环
  FOR ROW_CUR_FIRST_INDEX IN CUR_FIRST_INDEX LOOP
    --循环体
    DBMS_OUTPUT.PUT_LINE('{"ID":"' || ROW_CUR_FIRST_INDEX.A_ID || '","名称":"' || ROW_CUR_FIRST_INDEX.A_INDEXNAME || '"}');
  END LOOP;
END;  

  执行,输出结果

  变形二:遍历隐式游标(推荐使用)

  for循环遍历游标,其实又可以分为两种方式,一种是显式游标的遍历,另一种是隐式游标的遍历。

/* 如果是在存储过程外使用隐式游标,如果用不到变量无需声明DECLARE关键字 */
/*游标处理*/
BEGIN
  /*遍历隐式游标*/
  --FOR 循环
  FOR ROW_CUR_FIRST_INDEX IN (SELECT A.ID        A_ID, --一级指标ID
                                     A.INDEXNAME A_INDEXNAME --一级指标名称
                                FROM INDEX_A A
                               ORDER BY A_ID) LOOP
    --循环体
    DBMS_OUTPUT.PUT_LINE('{"ID":"' || ROW_CUR_FIRST_INDEX.A_ID || '","名称":"' || ROW_CUR_FIRST_INDEX.A_INDEXNAME || '"}');
  END LOOP;
END;

  隐式游标相较于显式游标用法更加简单,无需声明直接调用即可。    

阅读剩余部分

相关阅读 >>

oracle有哪些关闭模式?

mysql和oracle的区别有什么

oracle sql tuning 数据库优化步骤分享(图文教程)

oracle通过行范围查询取4至10行

oracle dba常用语句第12页

浅谈一下oracle大小写敏感问题

oracle应用程序实现打包 的方法

oracle基本查询用法入门示例

oracle忘记用户名和密码怎么办?

oracle表空间扩容详情

更多相关阅读请进入《oracle》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...