0
我有一個SYS_REFCURSOR
作爲OUT
參數的存儲過程。簽名是,例如,如下:從程序返回的REF CURSOR中提取和批量收集
PROCEDURE myProc(p_someID IN INTEGER, p_cursor OUT SYS_REFCURSOR);
我把這個過程從一個函數,在那裏我有一個從p_cursor
命名爲clientID
列複製到一個標量嵌套表。
我做如下:
CREATE OR REPLACE FUNCTION myFunction
RETURN sys_refcursor
IS
someID INTEGER := 1234;
myCursor SYS_REFCURSOR;
TYPE t_clientID_nt IS TABLE OF NUMBER(16,0);
clientID_nt t_clientID_nt;
otherID SYS_REFCURSOR;
BEGIN
myProc (someID, myCursor);
FOR i IN myCursor
LOOP
clientID_nt.EXTEND;
clientID_nt (clientID_nt.COUNT) := i.clientID;
END LOOP;
-- Other code that opens the cursor otherID
-- based on the IDs in clientID_nt
...
...
RETURN otherID;
END;
/
當我嘗試編譯這個功能,我得到的錯誤是:
PLS-00221: 'CLIENTID_NT' is not a procedure or is undefined
,它是在代碼的第11行。
任何關於如何從這樣的遊標獲取和批量收集的幫助是非常感謝。
@Rachcha您知道引用光標正在返回的類型(它們各自有多少列和哪些數據類型)?您可能通過研究'myProc'程序的源代碼來獲取這些信息。如果你知道類型,它與'some_table%rowtype'有所不同,那麼你可以聲明一個記錄類型,它有許多字段,它們中的很多字段都是引用遊標包含的,並且這些字段是兼容的數據類型。 –