2012-04-16 128 views
0

我有一個過程需要一個SYS_REFCURSOR並將其轉換爲JSON。PL/SQL靜態遊標變量作爲參考遊標

在一個調用上述過程中,我試圖定義一個CURSOR,並將其作爲REF CURSOR來提供。

我收到PLS-00361。

我明白我可以使用OPEN FOR構造,但是我需要在其他地方使用我的光標並且不喜歡重複。

有什麼建議嗎?

PROCEDURE LIST_EMPLOYEES 
    AS 

    l_ref_cursor SYS_REFCURSOR; 

    CURSOR c_emps 
    IS 
    SELECT email_address 
     FROM employees; 

    BEGIN 

    OPEN c_emps; 
    FETCH c_emps INTO l_ref_cursor; 

    json_utils.refcursor_to_json_via_http(l_ref_cursor, 
              'employees'); 

    CLOSE l_ref_cursor; 

    EXCEPTION 
    WHEN others 
    THEN 
    log_error; 
    END LIST_EMPLOYEES; 

Regards, Laurence。

回答

0

你不會取光標移動到REF CURSOR,你只需打開它:

PROCEDURE LIST_EMPLOYEES AS 

    l_ref_cursor SYS_REFCURSOR; 

BEGIN 

    OPEN l_ref_cursor FOR SELECT email_address FROM employees; 

    json_utils.refcursor_to_json_via_http(l_ref_cursor, 'employees'); 

    CLOSE l_ref_cursor; 

END LIST_EMPLOYEES; 
+0

感謝文森特,我知道我能做到這一點,但如果我想這個多次做什麼?我將不得不一遍又一遍地重複我的光標。 – retrodev 2012-04-16 14:34:40

+0

如果您不止一次需要此遊標,請創建一個返回SYS_REFCURSOR並調用該函數的函數:'json.refcursor_to_json_via_http(my_function,'employees');' – 2012-04-16 14:42:42