碼農學習筆記~Oracle~PLSQL~Cursor

By 維尼弘 - 11月 14, 2019



使用REF CURSOR

恩~本人第一次寫

原來要先定義Type才可以使用,
使用的方法也很特別,

參考如下:

1.建立Package或其他呼叫的功能

EX:

PACKAGE TEST AS
TYPE temp IS RECORD
(
temp VARCHAR2(20)
); 
TYPE temp _CURSOR IS REF CURSOR RETURN temp ; 

PROCEDURE TABLE_SEL(P_data IN VARCHAR2,temp OUT temp _CURSOR);

End TEST ;

BODY

PACKAGE BODY TEST IS

PROCEDURE TABLE_SEL(P_data IN VARCHAR2,temp OUT temp _CURSOR) IS 
BEGIN  
  OPEN temp FOR 
  SELECT DATA
  FROM TABLE_INFO
  WHERE Data= P_data;
END;

End TEST ;


2.然後進行測試


呼叫方法

DECLARE
  TYPE cursor_type1 IS REF CURSOR; -- 定義REF CURSOR資料型態為cursor_type1
  ref_cursor1 cursor_type1;  --宣告Curosr變數,資料型態為cursor_type1
  V_data varchar2(20);  
BEGIN  
    DBMS_OUTPUT.PUT_LINE('----- Tese -----');
    TEST.TABLE_SEL('test',ref_cursor1); -- 呼叫Procedure並傳入Cursor變數    
    LOOP
      FETCH ref_cursor1 INTO V_data ; -- 抓取ref_cursor1 中的一列資料放入V_data 
      EXIT WHEN ref_cursor1%NOTFOUND; -- 當讀取不到資料時跳離LOOP迴圈
      DBMS_OUTPUT.PUT_LINE(V_data );
    END LOOP;    
    CLOSE ref_cursor1; -- 關閉Cursor變數
END;

3.然後就等後DBA了。

恩~又學到一個特別的東東了

.............待續


  • Share:

You Might Also Like

0 意見