• 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语句,相当于赋值变量,用法灵活,更方便遍历、绑定变量等实际中应用比较多的操作。

  • 相关阅读:
    加载页面遮挡耗时操作任务页面--第三方开源--AndroidProgressLayout
    【数据库】SQLite学习
    【数据库】MongoDB学习
    【英语】Bingo口语笔记(8)
    【英语】TED视频笔记
    自动关联
    HTML和URL比较
    LR回放测试脚本
    LR录制脚本IE不能打开解决方法
    LR录制测试脚本
  • 原文地址:https://www.cnblogs.com/JeromeZ/p/5337736.html
Copyright © 2020-2023  润新知