Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Chèn vào bảng từ loại tập hợp oracle 12c - ORA-00902:kiểu dữ liệu không hợp lệ

Sau khi xem lại cẩn thận truy vấn của bạn, tôi thấy rằng bạn đã đúng. Insert không hoạt động. Và nó cũng có vẻ đúng. Chúng tôi đã có FORALL INSERT để chèn dữ liệu từ bộ sưu tập vào bảng. Do đó, sự cần thiết của việc có thêm INSERT as Select Statement bị loại trừ. Tuy nhiên, bạn có thể sử dụng SELECT câu lệnh sử dụng tập hợp trong Where của câu truy vấn. Để tạo và chèn, bạn có thể chỉ cần làm theo các bước dưới đây.

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

Trong trường hợp bạn muốn sử dụng Type được khai báo dưới PLSQL phạm vi trong Select , bạn có thể sử dụng như sau:

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 chuyển giá trị văn bản hàng thành cột

  2. Lỗi chuỗi nhà phát triển Oracle Sql quá dài theo nghĩa đen

  3. Làm cách nào để tải Oracle SCHEMA dưới dạng tập lệnh DDL với DBMS_METADATA (và SCHEMA_EXPORT)

  4. Thực hiện chọn ngay lập tức không trả về giá trị nào

  5. Chuyển đổi truy vấn SQL Oracle sang truy vấn Azure SQL