Su problema es en realidad un error PLS-00642, en lugar de ORA-22905. Esencialmente, no puede usar tipos de colección locales en declaraciones SQL. Por lo tanto, la solución es definir sus tipos a nivel de esquema. Al definir tipos de esta manera, no podemos usar la sintaxis %TYPE y, en su lugar, debemos definir explícitamente la columna (Obteniendo el error PLS-00201 al crear un tipo en Oracle ) es decir,
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;
Luego, debe convertir explícitamente los valores en el tipo relevante para realizar la recopilación masiva como se menciona aquí:ORA-00947 No hay suficientes valores al declarar el tipo globalmente .
Por lo tanto, su procedimiento se vería así:
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;