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;
    复制代码
  • 相关阅读:
    项目进展1
    团队项目(百药食坊)介绍
    结对编程—黄金点游戏(庞思瑶&季远琦)
    WC项目
    四则运算
    Week3——Session
    Spring IOC (DI-依赖注入)
    Week2——XML
    Week2——提交表单后后台的工作
    Week1——JavaEE
  • 原文地址:https://www.cnblogs.com/hjiongjiong/p/4227591.html
Copyright © 2011-2022 走看看