How do you get nicely formatted results from an Oracle procedure that returns a reference cursor?

后端 未结 3 1310
再見小時候
再見小時候 2020-11-27 21:06

In MS SQL Server if I want to check the results from a Stored procedure I might execute the following in Management Studio.

--SQL SERVER WAY
exec sp_GetQuest         


        
3条回答
  •  伪装坚强ぢ
    2020-11-27 21:28

    /*
        Create Sample Package in HR Schema
    */
    
    CREATE OR REPLACE PACKAGE PRINT_REF_CURSOR
    AS
        PROCEDURE SP_S_EMPLOYEES_BY_DEPT (
            p_DEPARTMENT_ID   IN  INTEGER,
            Out_Cur OUT SYS_REFCURSOR); 
    
    END PRINT_REF_CURSOR;        
    
    CREATE OR REPLACE PACKAGE BODY PRINT_REF_CURSOR
    AS
    
        PROCEDURE SP_S_EMPLOYEES_BY_DEPT (
            p_DEPARTMENT_ID   IN  INTEGER,
            Out_Cur OUT SYS_REFCURSOR)
        AS 
        BEGIN
          OPEN Out_Cur FOR
               SELECT *
                 FROM EMPLOYEES
                 WHERE DEPARTMENT_ID = p_DEPARTMENT_ID;
        EXCEPTION
          WHEN NO_DATA_FOUND
          THEN
             DBMS_OUTPUT.Put_Line('SP_S_EMPLOYEES_BY_DEPT' || ',' || '-20000' || ',' );
          WHEN OTHERS
          THEN
             DBMS_OUTPUT.Put_Line('SP_S_EMPLOYEES_BY_DEPT' || ',' || '-20001' || ',' );    
        END SP_S_EMPLOYEES_BY_DEPT;         
    
    END PRINT_REF_CURSOR;    
    
    /*
        Fetch values using Ref Cursor and display it in grid.
    */
    
    var RC refcursor;
    
    DECLARE 
        p_DEPARTMENT_ID NUMBER;
        OUT_CUR SYS_REFCURSOR;
    
    BEGIN 
      p_DEPARTMENT_ID := 90;
      OUT_CUR := NULL;
    
      PRINT_REF_CURSOR.SP_S_EMPLOYEES_BY_DEPT ( p_DEPARTMENT_ID, OUT_CUR);
      :RC := OUT_CUR;
    
    END;
    /
    PRINT RC;  
    /************************************************************************/  
    

提交回复
热议问题