あなたの質問を注意深く再検討した後、私はあなたが正しいことを発見しました。 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;
/