sql >> データベース >  >> RDS >> Oracle

コレクション型oracle12cから表に挿入-ORA-00902:無効なデータ型

    あなたの質問を注意深く再検討した後、私はあなたが正しいことを発見しました。 Insert 動作しません。そしてそれも正しく見えます。すでにFORALL INSERTがあります コレクションからテーブルに挿入されたデータを取得します。したがって、追加のINSERT as Select Statementする必要があります。 除外されます。ただし、SELECTを使用することはできます Whereのコレクションを使用したステートメント クエリの句。作成して挿入するには、以下の手順に従うだけです。

    CREATE OR REPLACE PACKAGE BODY test123 
    AS
    PROCEDURE p1 IS
     BEGIN
      SELECT c1,c2 BULK COLLECT INTO v_tab FROM tabx;  
    
      ForAll rec in 1..v_tab.count
       INSERT INTO taby
        values v_tab(rec);
         --SELECT * FROM TABLE(v_tab);
      END;
    END;
    /
    

    Typeを使用する場合 PLSQLで宣言 Selectのスコープ ステートメント、次のように使用できます:

    DECLARE
     TYPE typ1 IS RECORD(col1 VARCHAR2(100),col2 VARCHAR2(100));
     TYPE tab_typ IS TABLE OF typ1 INDEX BY BINARY_INTEGER;
     v_tab tab_typ;
    BEGIN
    
     SELECT col1,col2 BULK COLLECT INTO v_tab FROM tabx;  
    
      DELETE FROM taby
        WHERE (col1,col2) in (Select * from table(v_tab)); 
    
    END;
    /
    



    1. MySQLに外部キーを導入するとパフォーマンスが低下しますか

    2. MySQLデータ型の値を特定の範囲(できればENUMではない)に制限します

    3. phpとandroidを使用してサーバー(mysqlデータベース)に複数の画像をアップロードする方法

    4. SSL経由でAmazonRDSに接続するにはどうすればよいですか?