sql >> Database >  >> RDS >> Oracle

Invoegen in tabel van verzamelingstype Oracle 12c - ORA-00902:ongeldig gegevenstype

Na zorgvuldig uw vraag opnieuw te hebben bekeken, ontdekte ik dat u gelijk had. Insert werkt niet. En het ziet er ook nog eens correct uit. We hebben al FORALL INSERT om gegevens uit de verzameling in een tabel te krijgen. Vandaar de noodzaak van een extra INSERT as Select Statement uitgesloten is. U kunt echter de SELECT . gebruiken statement met behulp van een verzameling in Where clausule van de query. Om te maken en in te voegen kunt u eenvoudig de onderstaande stappen volgen.

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

Als u het Type wilt gebruiken gedeclareerd onder PLSQL bereik in Select verklaring, kunt u gebruiken zoals hieronder:

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. Aftrekken van twee gelijke waarden is niet nul in mysql

  2. Java JDBC Toegang geweigerd voor gebruiker

  3. Meerdere tabellen samenvoegen om NIET GELIJKE waarden te krijgen in MySQL

  4. Hoe OCTET_LENGTH() werkt in MariaDB