zoukankan      html  css  js  c++  java
  • REF CURSOR和CURSOR

    REF CURSOR

    DECLARE
        TYPE TY_EMP_CUR IS REF CURSOR;
        V_Emp_Cur              TY_EMP_CUR;
        V_Id                           EMP.ID%TYPE;
    BEGIN
        OPEN  V_Emp_Cur   FOR    SELECT ID FROM EMP;      --REF CURSOR的SELECT语句赋值位置,可以在逻辑模块中再次更改
        FETCH  V_Emp_Cur  INTO  V_Id;                                     --FETCH的作用的读取当前指针并移动到下一个指针目标
        WHILE  V_Emp_Cur%FOUND  LOOP
            DBMS_OUTPUT.PUT_LINE(V_Id);
            FETCH  V_Emp_Cur  INTO  V_Id;
        END LOOP;
    EXCEPTION
        WHEN OTHERS THEN
            DBMS_OUTPUT.PUT_LINE('Other exceptions');
            CONTINUE;
    END;

    CURSOR

    DECLARE
        CURSOR V_Emp_Cur IS SELECT ID FROM EMP;           --传统CURSOR的SELECT语句赋值位置,后期不可更改
        V_Id                              EMP.ID%TYPE;
    BEGIN
        OPEN  V_Emp_Cur;
        FETCH  V_Emp_Cur  INTO  V_Id;                                     --FETCH的作用的读取当前指针并移动到下一个指针目标
        WHILE  V_Emp_Cur%FOUND  LOOP
            DBMS_OUTPUT.PUT_LINE(V_Id);
            FETCH  V_Emp_Cur  INTO  V_Id;
        END LOOP;
    EXCEPTION
        WHEN OTHERS THEN
            DBMS_OUTPUT.PUT_LINE('Other exceptions');
            CONTINUE;
    END;

    总结:REF CURSOR和传统的CURSOR相比,传统的CURSOR只能在定义模块中给予该CURSOR相应的SELECT语句去完成定义,且不能后期在逻辑模块再次进行改变,用途很局限,除非SELECT语句不会变化;而REF CURSOR更像是定义一种类型,在定义模块中定义完TYPE和此TYPEVARIABLE,在逻辑模块中去给予SELECT语句,相当于赋值变量,用法灵活,更方便遍历、绑定变量等实际中应用比较多的操作。

  • 相关阅读:
    成功后的迷失
    让主参与的人生
    生命的见证
    谁偷走了我的安全感
    简单理解分页原理
    WebApp开发入门
    程序员必需知道的搜索引擎的搜索技巧
    提高网页打开速度技巧
    十分钟了解HTTP协议
    简单实现页面临摹设计图功能
  • 原文地址:https://www.cnblogs.com/JeromeZ/p/5337736.html
Copyright © 2011-2022 走看看