Sau khi xem lại cẩn thận truy vấn của bạn, tôi thấy rằng bạn đã đúng. Insert
không hoạt động. Và nó cũng có vẻ đúng. Chúng tôi đã có FORALL INSERT
để chèn dữ liệu từ bộ sưu tập vào bảng. Do đó, sự cần thiết của việc có thêm INSERT as Select Statement
bị loại trừ. Tuy nhiên, bạn có thể sử dụng SELECT
câu lệnh sử dụng tập hợp trong Where
của câu truy vấn. Để tạo và chèn, bạn có thể chỉ cần làm theo các bước dưới đây.
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;
/
Trong trường hợp bạn muốn sử dụng Type
được khai báo dưới PLSQL
phạm vi trong Select
, bạn có thể sử dụng như sau:
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;
/