oracle存储过程----遍历游标的方法(for、fetch、while)

oracle存储过程—-遍历游标的方法(for、fetch、while)

上一篇文章地址是:oracle存储过程—-游标(cursor)的学习
  本来我想自己写一下这个,但是后来发现了一个文章,写的挺好的,也挺容易理解的,所以我就盗窃 了这个作者的文章(不要鄙视我) ,原文地址是:存储过程中遍历游标的三种方式(For,Fetch,While)
  为了以示尊重,我原封不动的扒了过来(盗亦有道)。

/********************************************************************************/
  我是初学数据库编程,在这里谈谈我对游标的理解,如果有什么理解不对的,还希望路过的大牛们指导一番!

  游标其实就是结果集,而在实际开发中,常用的是for循环去遍历游标。直接上代码吧。

create or replace procedure myprocedure is
      CURSOR CUR_TEST IS --声明显式游标
             SELECT ECODE,ENAME
              FROM EMP;
      CUR CUR_TEST%ROWTYPE; --定义游标变量,该变量的类型为基于游标C_EMP的记录

    BEGIN 
      --For 循环
      FOR CUR IN CUR_TEST LOOP
          --循环体
        DBMS_OUTPUT.PUT_LINE('员工编号:'||CUR.ECODE ||'员工姓名:'|| CUR.ENAME);
      END LOOP;

      --Fetch 循环
      OPEN CUR_TEST;--必须要明确的打开和关闭游标
      LOOP 
        FETCH CUR_TEST INTO CUR;
        EXIT WHEN CUR_TEST%NOTFOUND;
        --循环体
        DBMS_OUTPUT.PUT_LINE('员工编号:'||CUR.ECODE ||'员工姓名:'|| CUR.ENAME);
      END LOOP;
      CLOSE C_EMP;

      --While 循环
      OPEN CUR_TEST;--必须要明确的打开和关闭游标
        FETCH CUR_TEST INTO CUR;
        WHILE CUR_TEST%FOUND LOOP  
          --循环体
          DBMS_OUTPUT.PUT_LINE('员工编号:'||CUR.ECODE ||'员工姓名:'|| CUR.ENAME);

          FETCH CUR_TEST INTO CUR;
        END LOOP;
      CLOSE C_EMP;



    END myprocedure; 
使用For循环的有什么好处?

  从代码中可以很明显的看出:

  1. 使用for循环不需要关注游标是否打开或关闭。
  2. for循环会自动将数据fetch到记录型变量。
  3. for循环不需要关注何时要退出,也就是不需要写退出满足条件。遍历完成就会退出。
  所以for循环是用来循环游标的最好方法。高效,简洁,安全。

下一篇 oracle存储过程—-赋值、相等、分支的写法

猜你喜欢

转载自blog.csdn.net/wohaqiyi/article/details/81631257
今日推荐