恩~本人第一次寫
原來要先定義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了。
恩~又學到一個特別的東東了
.............待續
0 意見