--私の最初の手順
CREATE OR REPLACE PROCEDURE P1(V_SALARY NUMBER,OUTPUT_VALUE OUT SYS_REFCURSOR)
AS
BEGIN
OPEN OUTPUT_VALUE FOR
SELECT FIRST_NAME,LAST_NAME
FROM EMPLOYEES
WHERE SALARY >V_SALARY;
END;
--第二の手順
CREATE OR REPLACE PROCEDURE P2(V_SAL NUMBER)
AS
RETURN_VALUE SYS_REFCURSOR;
TYPE TTT IS RECORD(FIRST_NAME VARCHAR2(30),LAST_NAME VARCHAR2(20)) ;
I TTT;
TYPE TNAME IS TABLE OF TTT INDEX BY BINARY_INTEGER;
K TNAME;
BEGIN
P1(V_SAL,RETURN_VALUE);
FETCH RETURN_VALUE BULK COLLECT INTO K;
FORALL X IN K.FIRST..K.LAST
INSERT INTO T1 VALUES (K(X).FIRST_NAME,K(X).LAST_NAME);
CLOSE RETURN_VALUE;
END;
/
12 行目のエラー: PLS-00436: 実装制限: レコードの BULK In-BIND テーブルのフィールドを参照できません
しかし、for ループを挿入しようとすると、正常に動作します。Forall(一括バインド) を使用すると動作しません。