2

DBLINK - @FMATLINK を使用して、さまざまなテーブルから宛先のリモート テーブル 'Audition_Detail' に巨大なレコードを挿入したいと考えています。一括収集を使用しましたが、エラーがスローされます。私もいくつかのリンクを通過しました:

データベース リンクを介した一括挿入の制限を克服する

PLS-00394: フェッチ文のINTOリストの値の数が正しくありません

コードは次のとおりです。

DECLARE
    TYPE FETCH_ARRAY IS TABLE OF AUDITION_DETAIL@FMATLINK%ROWTYPE;   
    A_DATA FETCH_ARRAY;

    CURSOR A_CUR IS
        --------------------------------------------------------Address1--------------------------------------------------------------------------

        SELECT A.PARTY_SITE_NUMBER FMAT_FMATID, B.ZADDRESSFMATID F4F_FMATID,
        C.ADDRESS1 FMAT_VALUE, B.STREET F4F_VALUE , 'ADDRESS1' 
        FROM APPS.HZ_PARTY_SITES@FMATLINK A , f4f_corporateaccount B , APPS.HZ_LOCATIONS@FMATLINK C
        WHERE 1=1
        AND B.ROLECODETEXT = 'Site Account'
        AND A.PARTY_SITE_NUMBER = B.ZADDRESSFMATID
        AND A.STATUS = 'A'

        UNION ALL 
        ------------------------------------------------------Address2-----------------------------------------------------------------------------

        SELECT A.PARTY_SITE_NUMBER FMAT_FMATID, B.ZADDRESSFMATID F4F_FMATID,
        C.ADDRESS2 FMAT_VALUE, B.addressline1 F4F_VALUE , 'ADDRESS2'  
        FROM APPS.HZ_PARTY_SITES@FMATLINK A , f4f_corporateaccount B , APPS.HZ_LOCATIONS@FMATLINK C
        WHERE 1=1
        AND B.ROLECODETEXT = 'Site Account'
        AND A.PARTY_SITE_NUMBER = B.ZADDRESSFMATID
        AND A.STATUS = 'A'


BEGIN   
    OPEN A_CUR;
    LOOP                      
        FETCH A_CUR BULK COLLECT INTO A_DATA LIMIT 20; 
            FORALL IN 1..A_DATA.COUNT     
            INSERT INTO AUDITION_DETAIL@FMATLINK VALUES A_DATA(i);

        EXIT WHEN A_CUR%NOTFOUND;
    END LOOP;
    CLOSE A_CUR;
    COMMIT;
END;

エラーレポート -

ORA-06550: 行 39、列 3:

PLS-00394: FETCH文のINTOリストの値の数が正しくありません

ORA-06550: 行 39、列 3:

PL/SQL: SQL文は無視されました

ORA-06550: 行 40、列 4:

PLS-00739: FORALL INSERT/UPDATE/DELETEはリモート表ではサポートされていません 06550. 00000 - "行%s、列%s:\n%s"

*原因: 通常、PL/SQL コンパイル エラーです。*アクション:

4

1 に答える 1