存储过程遍历游标三种方式

  1. CREATE OR REPLACE PROCEDURE PRC_LJ IS 
  2.   CURSOR C_EMP IS --声明显式游标  
  3.     SELECT EMPNO,ENAME FROM EMP;  
  4.   C_ROW C_EMP%ROWTYPE; --定义游标变量,该变量的类型为基于游标C_EMP的记录  
  5. BEGIN 
  6.   --For 循环  
  7.   FOR C_ROW IN C_EMP LOOP  
  8.     DBMS_OUTPUT.PUT_LINE(C_ROW.EMPNO || '--' || C_ROW.ENAME);  
  9.   END LOOP;  
  10.  
  11.   --Fetch 循环  
  12.   OPEN C_EMP;--必须要明确的打开和关闭游标  
  13.   LOOP  
  14.     FETCH C_EMP  
  15.       INTO C_ROW;  
  16.     EXIT WHEN C_EMP%NOTFOUND;  
  17.     DBMS_OUTPUT.PUT_LINE(C_ROW.EMPNO || '++' || C_ROW.ENAME);  
  18.   END LOOP;  
  19.   CLOSE C_EMP;  
  20.  
  21.   --While 循环  
  22.   OPEN C_EMP;--必须要明确的打开和关闭游标  
  23.     FETCH C_EMP INTO C_ROW;  
  24.     WHILE C_EMP%FOUND LOOP  
  25.       DBMS_OUTPUT.PUT_LINE(C_ROW.EMPNO || '**' || C_ROW.ENAME);  
  26.       FETCH C_EMP INTO C_ROW;  
  27.     END LOOP;  
  28.   CLOSE C_EMP;  

  1. END PRC_LJ; 
  2. 第一种使用For 循环
    for循环是比较简单实用的方法。 
    首先,它会自动open和close游标。解决了你忘记打开或关闭游标的烦恼。 
    其次,自动声明一个记录类型及定义该类型的变量,并自动fetch数据到这个变量。 
    注意C_ROW 这个变量无需要在循环外进行声明,无需为其指定数据类型。它是一个记录类型,具体的结构是由游标决定的。
    这个变量的作用域仅仅是在循环体内。
    最后,与该游标关联的所有记录都已经被取回后,循环无条件结束,不必判定游标的%NOTFOUND属性为TRUE。
    for循环是用来循环游标的最好方法。高效,简洁,安全。

    第二种使用Fetch循环
    注意,exit when语句一定要紧跟在fetch之后,避免多余的数据处理。 
    处理逻辑需要跟在exit when之后。 
    循环结束后要记得关闭游标。

    第三种使用While循环
    使用while 循环时,需要在循环之前进行一次fetch动作,游标的属性才会起作用。
    而且数据处理动作必须放在循环体内的fetch方法之前,循环体内的fetch方法要放在最后,否则就会多处理一次。


  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值