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

Как да избера от масово събрана таблица с тип записи

Вашият проблем всъщност е грешка PLS-00642, а не ORA-22905. По същество не можете да използвате типове локални колекции в SQL изрази. Следователно решението е да дефинирате вашите типове на ниво схема. Когато дефинираме типове по този начин, не можем да използваме синтаксиса %TYPE и вместо това трябва изрично да дефинираме колоната (Получаване на PLS-00201 грешка при създаване на тип в oracle ), т.е.

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;

След това трябва изрично да конвертирате стойностите в съответния тип, за да извършите груповото събиране, както е споменато тук:ORA-00947 Няма достатъчно стойности при глобално деклариране на тип .

Следователно вашата процедура ще изглежда така:

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. Показване на динамичен EXECUTE изход в рамките на pl/sql От sqlplus

  2. Възможно ли е да се генерират django модели от базата данни?

  3. Python DPI-1047 Не може да намери dlopen(libclntsh.dylib) на macOS

  4. Динамичен SQL, използващ конфигурационни таблици

  5. Как да синхронизирам и оптимизирам индекс на Oracle Text?