sql >> Databasteknik >  >> RDS >> Oracle

Infoga i tabell från samlingstyp oracle 12c - ORA-00902:ogiltig datatyp

Efter att noggrant granskat din fråga upptäckte jag att du hade rätt. Insert fungerar inte. Och det ser korrekt ut också. Vi har redan FORALL INSERT för att få in data från samlingen till en tabell. Därav nödvändigheten av att ha ytterligare en INSERT as Select Statement är uteslutet. Du kan dock använda SELECT uttalande med en samling i Where klausul i frågan.För att göra och infoga kan du helt enkelt följa stegen nedan.

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

Om du vill använda Type deklareras under PLSQL omfattning i Select uttalande kan du använda enligt nedan:

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



  1. välj de N ÖSTA raderna från en tabell

  2. VÄNSTER YTTRE JOIN med villkor (var, beställ efter)?

  3. Avrundning till 2 decimaler i SQL

  4. Hur infogar man en CSV-fildata i MYSQL med Python effektivt?