Я пытаюсь создать функцию в пакете, которая возвращает таблицу. Я надеюсь вызвать функцию один раз в пакете, но иметь возможность повторно использовать свои временные интервалы данных. Хотя я знаю, что создаю временные таблицы в Oracle, я надеялся сохранить вещи DRY.
До сих пор это то, что у меня есть:
Заголовок:
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;
Тело
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.
Что мне не хватает?