我试图使用自定义记录和记录数据类型表从复杂的查询中提取数据(这里已经简化),但是由于"PLS-00308:此结构不允许作为赋值“错误的来源,我无法将数据输入表。我仔细地学习了这些例子,但不理解问题所在。有人能指点我的方向吗。
这是密码
TYPE CORE_REC IS RECORD
(
OrgID CHAR(20 BYTE)
, StoreNumber VARCHAR2(200 BYTE)
, StoreName VARCHAR(200 BYTE)
, AssociateName VARCHAR2(300 BYTE)
);
TYPE CORE_REC_CURSOR IS REF CURSOR RETURN CORE_REC;
TYPE CORE_REC_TABLE IS TABLE OF CORE_REC INDEX BY BINARY_INTEGER;
FUNCTION CORE_GETCURRS (
OrgID IN CHAR
) RETURN HDT_CORE_MAIN.CORE_REC AS
CurrTable HDT_CORE_MAIN.CORE_REC;
i BINARY_INTEGER := 0;
CURSOR CurrCursor IS
WITH
CoreCurrs AS
(SELECT
busSTR.id AS OrgID
, busSTR.name AS StoreNumber
, busSTR.name2 AS StoreName
, emp.lname || ', ' || emp.fname || ' ' || emp.mname AS AssociateName
FROM tp2.tpt_company busSTR
INNER JOIN tp2.cmt_person emp
ON busSTR.ID = emp.company_id
WHERE
busSTR.id = OrgID
)
SELECT
CoreCurrs.OrgID
, CoreCurrs.StoreNumber
, CoreCurrs.StoreName
, CoreCurrs.AssociateName
FROM CoreCurrs
;
BEGIN
DBMS_OUTPUT.ENABLE(1000000);
OPEN CurrCursor;
LOOP
i := i + 1;
FETCH CurrCursor INTO CurrTable(i);
EXIT WHEN CurrCursor%NOTFOUND;
END LOOP;
CLOSE CurrCursor;
RETURN CurrTable;
END CORE_GETCURRS;在FETCH语句中抛出错误。
发布于 2014-09-03 14:46:23
您的变量类型不对,应该是:
CurrTable HDT_CORE_MAIN.CORE_REC_TABLE;目前,您正在尝试选择一个记录的元素,而不是一个表的元素,这是没有意义的。当它被定义为CORE_REC时,引用CurrTable(i)并不意味着什么。
https://stackoverflow.com/questions/25646748
复制相似问题