Oracle
 sql >> Datenbank >  >> RDS >> Oracle

In Tabelle aus Sammlungstyp Oracle 12c einfügen - ORA-00902:Ungültiger Datentyp

Nachdem ich Ihre Frage sorgfältig überprüft habe, stellte ich fest, dass Sie Recht hatten. Insert funktioniert nicht. Und es sieht auch richtig aus. Wir haben bereits FORALL INSERT um Daten aus der Sammlung in eine Tabelle einzufügen. Daher die Notwendigkeit eines zusätzlichen INSERT as Select Statement ist ausgeschlossen. Sie können jedoch den SELECT verwenden Anweisung mit einer Sammlung in Where Klausel der Abfrage. Zum Erstellen und Einfügen können Sie einfach die folgenden Schritte ausführen.

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;
/

Falls Sie den Type verwenden möchten deklariert unter PLSQL Geltungsbereich in Select -Anweisung können Sie wie folgt verwenden:

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;
/