【发布时间】:2011-02-19 06:26:36
【问题描述】:
我正在尝试在包中创建一个返回表的函数。我希望在包中调用该函数一次,但能够多次重复使用其数据。虽然我知道我在 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;
主体:
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。
我错过了什么?
【问题讨论】: