【发布时间】:2013-11-02 23:08:03
【问题描述】:
我有一个以SYS_REFCURSOR 作为OUT 参数的存储过程。签名例如如下:
PROCEDURE myProc(p_someID IN INTEGER, p_cursor OUT SYS_REFCURSOR);
我从一个函数调用这个过程,我必须将一个名为 clientID 的列从 p_cursor 复制到一个标量嵌套表。
我的做法如下:
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 行。
非常感谢任何有关如何从此类游标中获取和批量收集的帮助。
【问题讨论】:
标签: oracle plsql oracle11g cursor oracle11gr2