2017-01-19 23 views
-3

syscursor爲例進行說明。有人可以給我一個關於如何以及何時應該在oracle中使用syscursor的解釋嗎?

什麼時候在plsql過程中使用syscursor?我已經瀏覽了網站,但沒有得到如何以及何時使用這個。

+1

有文檔中涉及到遊標一整章:https://docs.oracle.com/database/121 /LNPLS/static.htm#LNPLS00602網上有很多文章:http://www.oracle.com/technetwork/issue-archive/2013/13-mar/o23plsql-1906474.html我投票結束這個問題爲太寬泛。 – krokodilko

+0

[Alternate of sys \ _refcursor]可能重複(http://stackoverflow.com/questions/35503839/alternate-of-sys-refcursor) – Shine

+0

@krokodilko:謝謝 – Shine

回答

0

SYS_REFCURSOR是使用PL/SQL程序返回記錄集。

示例 - 讓我們得到所有表的細節對於一個給定的模式,並通過SYS_REFCURSOR

CREATE OR REPLACE PROCEDURE GET_TABLE_DETAILS(schemaName IN VARCHAR2, 
               table_details OUT SYS_REFCURSOR) IS 
    BEGIN 
    OPEN table_details FOR 
     select table_name, column_name, data_type from ALL_TAB_COLUMNS where OWNER = schemaName; 
    END GET_TABLE_DETAILS; 

回到這裏table_details輸出參數將包含選擇查詢的結果數據,可以如下檢索。

DECLARE 
    table_details_cursor SYS_REFCURSOR; 
    tab_name ALL_TAB_COLUMNS.table_name%TYPE; 
    col_name ALL_TAB_COLUMNS.column_name%TYPE; 
    data_type ALL_TAB_COLUMNS.data_type%TYPE; 
BEGIN 
    GET_TABLE_DETAILS (schemaName => 'DUMMY', 
        table_details => table_details_cursor); 

    LOOP 
    FETCH table_details_cursor 
    INTO tab_name, col_name, data_type; 
    EXIT WHEN table_details_cursor%NOTFOUND; 
    DBMS_OUTPUT.PUT_LINE(tab_name || ' | ' || col_name || ' | ' || data_type); 
    END LOOP; 
    CLOSE table_details_cursor; 
END; 

但是,您需要通過詳細解釋Oracle文檔獲取 - Oracle - Cursors Documenatation

相關問題