Я пытаюсь создать функцию в пакете, которая возвращает таблицу. Я надеюсь вызвать функцию один раз в пакете, но смогу многократно использовать ее данные. Хотя я знаю, что я создаю временные таблицы в Oracle, я надеялся, что все останется СУХИМ.
Пока что вот что у меня есть:
Заголовок:
CREATE OR REPLACE PACKAGE TEST AS
TYPE MEASURE_RECORD IS RECORD (
L4_ID VARCHAR2(50),
L6_ID VARCHAR2(50),
L8_ID VARCHAR2(50),
YEAR NUMBER,
PERIOD NUMBER,
VALUE NUMBER
);
TYPE MEASURE_TABLE IS TABLE OF MEASURE_RECORD;
FUNCTION GET_UPS(
TIMESPAN_IN IN VARCHAR2 DEFAULT 'MONTLHY',
STARTING_DATE_IN DATE,
ENDING_DATE_IN DATE
) RETURN MEASURE_TABLE;
END TEST;
Body:
CREATE OR REPLACE PACKAGE BODY TEST AS
FUNCTION GET_UPS (
TIMESPAN_IN IN VARCHAR2 DEFAULT 'MONTLHY',
STARTING_DATE_IN DATE,
ENDING_DATE_IN DATE
) RETURN MEASURE_TABLE IS
T MEASURE_TABLE;
BEGIN
SELECT ...
INTO T
FROM ...
;
RETURN T;
END GET_UPS;
END TEST;
Заголовок компилируется, тело - нет. Одно сообщение об ошибке «недостаточно значений», что, вероятно, означает, что я должен выбирать в MEASURE_RECORD, а не в MEASURE_TABLE.
Чего мне не хватает?