Setelah meninjau kembali kueri Anda dengan cermat, saya menemukan bahwa Anda benar. Insert
tidak bekerja. Dan itu terlihat benar juga. Kami sudah memiliki FORALL INSERT
untuk memasukkan data dari koleksi ke tabel. Oleh karena itu perlunya tambahan INSERT as Select Statement
dikesampingkan. Namun Anda dapat menggunakan SELECT
pernyataan menggunakan koleksi di Where
klausa kueri. Untuk membuat dan menyisipkan, Anda cukup mengikuti langkah-langkah di bawah ini.
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;
/
Jika Anda ingin menggunakan Type
dideklarasikan di bawah PLSQL
cakupan di Select
pernyataan, Anda dapat menggunakan seperti di bawah ini:
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;
/