Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Wstaw do tabeli z kolekcji typu oracle 12c - ORA-00902:nieprawidłowy typ danych

Po dokładnym przejrzeniu Twojego zapytania stwierdziłem, że masz rację. Insert nie działa. I też wygląda poprawnie. Mamy już FORALL INSERT aby pobrać dane z kolekcji do tabeli. Stąd konieczność posiadania dodatkowej instrukcji INSERT as Select Statement jest wykluczone. Możesz jednak użyć SELECT oświadczenie przy użyciu kolekcji w Where klauzulę zapytania. Aby dokonać i wstawić, wystarczy wykonać poniższe czynności.

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

Jeśli chcesz użyć Type zadeklarowane w PLSQL zakres w Select oświadczenie, możesz użyć jak poniżej:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zaktualizuj wiele kolumn na podstawie obliczeń procentowych w Oracle

  2. ORA-01735:nieprawidłowa opcja ALTER TABLE - Ropucha

  3. Hibernate Mapping — łączenie dwóch tabel za pomocą tabeli asocjacyjnej — ale z niespodzianką

  4. Eksportuj wyniki zapytania do pliku XML przy użyciu SQLcl (Oracle)

  5. Czy dozwolone jest używanie SELECT wewnątrz potokowej funkcji tabeli PL/SQL?