Efter omhyggeligt at have gennemgået din forespørgsel, fandt jeg ud af, at du havde ret. Insert
virker ikke. Og det ser også rigtigt ud. Vi har allerede FORALL INSERT
at få indsat data fra samlingen til en tabel. Derfor er det nødvendigt at have en ekstra INSERT as Select Statement
er udelukket. Du kan dog bruge SELECT
sætning ved hjælp af en samling i Where
klausul i forespørgslen. For at lave og indsætte kan du blot følge nedenstående trin.
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;
/
Hvis du vil bruge Type
erklæret under PLSQL
omfang i Select
erklæring, kan du bruge som nedenfor:
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;
/