我正在设计一个功能,它是一个更大的软件包的一部分。该功能旨在获取地区代码并返回分配给该地区的10-15家商店的唯一ID集合。该函数旨在返回可以像查询表一样查询的集合,即使用SQL语句中的TABLE函数。
我创建了以下类型:
架构级别类型:
create or replace TYPE HDT_CORE_ORGIDS AS TABLE OF CHAR(20);和包内的类型
TYPE CORE_ORGIDS IS TABLE OF CHAR(20) INDEX BY BINARY_INTEGER;以下是功能代码:
FUNCTION FindDistrictOrgs(
ParamOrgCode VARCHAR2
)
RETURN HDT_CORE_ORGIDS
AS
ReturnOrgs HDT_CORE_ORGIDS := HDT_CORE_ORGIDS();
FDOTemp HDT_CORE_MAIN.CORE_ORGIDS;
i BINARY_INTEGER := 0;
CURSOR FDOCurr IS
SELECT org.id AS OrgID
FROM tp2.tpt_company org
WHERE LEVEL = 2
START WITH org.name = ParamOrgCode
CONNECT BY PRIOR org.id = org.parent_id;
BEGIN
OPEN FDOCurr;
LOOP
i := i +1;
FETCH FDOCurr INTO FDOTemp(i);
EXIT WHEN FDOCurr%NOTFOUND;
END LOOP;
IF FDOTemp.EXISTS(FDOTemp.FIRST) THEN
ReturnOrgs.EXTEND(FDOTemp.LAST);
FOR x IN FDOTemp.FIRST .. FDOTemp.LAST LOOP
ReturnOrgs(x) := FDOTemp(x).OrgID;
END LOOP;
END IF;
CLOSE FDOCurr;
RETURN ReturnOrgs;
END FindDistrictOrgs ;我得到PLS-00487:Invalid Reference to variable 'CHAR':
ReturnOrgs(x) := FDOTemp(x).OrgID;我对SQL返回的值进行了双重检查(org.id AS OrgID)是CHAR(20 BYTE)数据类型。
那么...什么导致了错误?
任何帮助表示赞赏! :)