Ich habe die folgende PL/SQl-Prozedur (Code unten), und diese Prozedur ruft eine PL/SQL-Funktion von einem Cursor. Der Rückgabetyp dieser Funktion ist jedoch SYS_REFCURSORWie durchlaufen einen Cursor, der einen Ref-Cursor hat
Mein Ziel ist Schleife durch den Cursor und fügen Sie die Datensätze in eine Tabelle ein. Einfach.
Zuerst ist hier die Funktion:
FUNCTION DOB_DIFF (JOB1 NUMBER, JOB2 NUMBER, CASE_NUMBER NUMBER DEFAULT 0)
RETURN SYS_REFCURSOR IS
XDO_CURSOR SYS_REFCURSOR;
BEGIN
OPEN XDO_CURSOR FOR
'SELECT A.X,
A.Y,
''BNFCRY'' AS TYPE,
B.Z AS DOB
FROM TABLE1 B, TABLE A
WHERE B.X = A.X
AND B.Y = A.Y';
RETURN XDO_CURSOR;
END DOB_DIFF;
Hier ist das Verfahren & Was ich habe, so weit:
create or replace PROCEDURE CALL_FUNC1 (USER_ID IN VARCHAR2, JOB_NR1 IN NUMBER, JOB_NR2 IN NUMBER, CASE_NUM NUMBER DEFAULT 0) AS
CURSOR DOB_DIFF IS
SELECT PKG_PACKAGE1.DOB_DIFF (JOB_NR1, JOB_NR2, CASE_NUM) FROM DUAL;
BEGIN
FOR I IN DOB_DIFF LOOP
INSERT INTO IPVOWN.PRT_BEN_DOB_DIFF (X, Y, TYPE, DOB)
VALUES (I.X, I.Y, I.TYPE, I.DOB);
END LOOP;
COMMIT;
END CALL_FUNC1;
ich die folgenden Fehler bekommen, Was mache ich falsch ?? Es scheint, als könnte ich den Cursor nicht durchlaufen, weil der Rückgabewert der Funktion SYS_REFCURSOR ist, was eine Liste ist. Wenn das der Fall ist, wie kann ich dann eine Liste in einem Cursor durchlaufen?
Error(61,2): PLS-00989: Cursor Variable in record, object, or collection is not supported by this release
Vielen Dank im Voraus.
Dank bevorzugen. Das hat mir geholfen. – AJR