Hol-und bulk-sammeln von REF CURSOR zurückgegeben wird eine Prozedur

Ich habe eine gespeicherte Prozedur, die eine SYS_REFCURSOR als OUT parameter. Die Signatur ist, zum Beispiel, wie folgt:

PROCEDURE myProc(p_someID IN INTEGER, p_cursor OUT SYS_REFCURSOR);

Rufe ich diese Prozedur von einer Funktion, wo muss ich kopieren Sie eine Spalte mit dem Namen clientID von der p_cursor einen Skalar geschachtelte Tabelle.

Mache ich wie folgt:

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;
/

Wenn ich versuche zu kompilieren dieser Funktion, die Fehler, die ich bekomme, ist:

PLS-00221: 'CLIENTID_NT' is not a procedure or is undefined

und es wird in Zeile 11 der code.

Jede Hilfe, wie zu Holen und bulk collect aus wie ein cursor wird sehr geschätzt.

InformationsquelleAutor Rachcha | 2013-10-24
Schreibe einen Kommentar