zoukankan      html  css  js  c++  java
  • Oracle基础 存储过程和游标

    一、带游标的存储过程

      游标作为参数有两种类型:

      1、声明系统游标类型 SYS_REFCURSOR

      1)游标作为存储过程的参数:

    --带游标的存储过程
    CREATE OR REPLACE PROCEDURE PRO_EMP_IN(EMP_CUR SYS_REFCURSOR) AS
      V_NAME EMP.ENAME%TYPE;
      V_SAL  EMP.SAL%TYPE;
    BEGIN
      LOOP
        FETCH EMP_CUR
          INTO V_NAME, V_SAL;
        DBMS_OUTPUT.PUT_LINE('name:' || V_NAME || '   sal:' || V_SAL);
        EXIT WHEN EMP_CUR%NOTFOUND;
      END LOOP;
    END;

      调用带游标的存储过程:

    --调用带游标的存储过程
    DECLARE
      EMP_CUR SYS_REFCURSOR;
    BEGIN
      OPEN EMP_CUR FOR
        SELECT ENAME, SAL FROM EMP;
      PRO_EMP_IN(EMP_CUR => EMP_CUR);
      CLOSE EMP_CUR;
    END

      

      2)带输出游标的存储过程

    --SYS_REFCURSOR 带输出参数的系统游标类型
    CREATE OR REPLACE PROCEDURE PRO_EMP(EMP_CUR OUT SYS_REFCURSOR) AS
    BEGIN
      OPEN EMP_CUR FOR
        SELECT ENAME, SAL FROM EMP E;   --和查询语句绑定
    END;

      调用带输出游标的存储过程:  

    --调用带输出类型的游标的存储过程
    DECLARE
      V_NAME  EMP.ENAME%TYPE;
      V_SAL   EMP.SAL%TYPE;
      EMP_CUR SYS_REFCURSOR;    --声明系统游标类型
    BEGIN
      PRO_EMP(EMP_CUR => EMP_CUR);
      LOOP
        FETCH EMP_CUR INTO V_NAME, V_SAL;
        DBMS_OUTPUT.PUT_LINE('name:' || V_NAME || '   sal:' || V_SAL);
        EXIT WHEN EMP_CUR%NOTFOUND;
      END LOOP;
      CLOSE EMP_CUR;
    END;

      2、声明自定义游标类型。

      

  • 相关阅读:
    1048 石子归并
    高精度算法小结
    3117 高精度练习之乘法
    UVa 11809
    3115 高精度练习之减法
    3116 高精度练习之加法
    “da shen” in my heart
    爱是怀疑!
    普通disco
    崇拜
  • 原文地址:https://www.cnblogs.com/zhengcheng/p/4217522.html
Copyright © 2011-2022 走看看