У меня есть процедура, в которой мне нужно кэшировать некоторые данные по соображениям производительности для последующих операций.
Определения TYPE
работают
BULK COLLECT INTO
работает
SELECT
не работает
PROCEDURE MYPROC((PARAMS))AS
TYPE REC_TYPE IS RECORD (
COLUMN_1 (TABLEA.COLUMN_A)%TYPE,
COLUMN_2 (TABLEA.COLUMN_B)%TYPE
);
TYPE TAB_TYPE IS TABLE OF REC_TYPE;
TABLE_1 TAB_TYPE;
BEGIN
SELECT COLUMN_A, COLUMN_B
BULK COLLECT INTO TABLE_1
FROM TABLE_A;
SELECT * FROM TABLE_1;
END MYPROC;
Урожайность:
Ошибка (#, #): PL/SQL: ORA-00942: таблица или представление не существует
Я также пытался обернуть его в табличную функцию, как я делаю с моими типами с одним столбцом в другом месте, но это тоже не сработало.
SELECT * FROM TABLE(TABLE_1);
Ошибка (#, #): PL/SQL: ORA-22905: невозможно получить доступ к строкам из невложенного элемента таблицы