Oracle
 sql >> база данни >  >> RDS >> Oracle

Вмъкване в таблица от тип колекция oracle 12c - ORA-00902:невалиден тип данни

След като прегледах внимателно вашето запитване, установих, че сте били прави. Insert не работи. И също така изглежда правилно. Вече имаме FORALL INSERT за да получите вмъкнати данни от колекцията в таблица. Оттук и необходимостта от допълнителен INSERT as Select Statement е изключено. Можете обаче да използвате SELECT израз, използващ колекция в Where клауза на заявката. За да направите и вмъкнете, можете просто да следвате стъпките по-долу.

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

В случай, че искате да използвате Type деклариран под PLSQL обхват в Select израз, можете да използвате както по-долу:

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. Как да форматирате числа в Oracle

  2. Как да свържете cx_oracle с Pyinstaller

  3. Получаване на грешка при изпълнение на пакета

  4. Dapper - извикване на Oracle schema.package.function

  5. if (изберете брой (колона) от таблица)> 0 тогава