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

Làm cách nào để chọn từ Loại Bảng Hồ sơ Được Thu thập Hàng loạt

Sự cố của bạn thực sự là lỗi PLS-00642 chứ không phải ORA-22905. Về cơ bản, bạn không thể sử dụng các kiểu tập hợp cục bộ trong các câu lệnh SQL. Do đó, giải pháp là xác định các kiểu của bạn ở cấp giản đồ. Khi xác định loại theo cách này, chúng tôi không thể sử dụng cú pháp% TYPE và thay vào đó, phải xác định rõ ràng cột ( Gặp lỗi PLS-00201 khi tạo một loại trong oracle ) tức là

create or replace type rec_type as object (
  COLUMN_1 integer,
  COLUMN_2 varchar2(128)
);

create or replace type tab_type as table of rec_type;

Sau đó, bạn cần chuyển đổi rõ ràng các giá trị thành loại có liên quan để thực hiện thu thập hàng loạt như đã đề cập ở đây: ORA-00947 Không đủ giá trị khi khai báo loại trên toàn cầu .

Do đó, thủ tục của bạn sẽ trông giống như sau:

PROCEDURE MYPROC((PARAMS))AS
  TABLE_1 TAB_TYPE;
  lCount  integer;
BEGIN

  SELECT  REC_TYPE(COLUMN_A, COLUMN_B)
  BULK COLLECT INTO TABLE_1 
  FROM  TABLE_A;

  SELECT COUNT(*) INTO lCount FROM TABLE(TABLE_1);
END MYPROC;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hợp nhất không tầm thường của hai bảng

  2. Cập nhật cột tập hợp bảng bằng để chọn nơi id khớp với bên ngoài truy vấn trong oracle

  3. Oracle chọn bản ghi ngày gần đây nhất

  4. Việc sử dụng select * cho con trỏ trong PL / SQL có bị coi là lập trình tồi không?

  5. Parameter.AsString không thành công trong Oracle / MSSQL - Parameter.Value ký tự 2 byte trong Oracle