oracle pls 00410,PLS-00487错误 - 对变量'CHAR'的无效引用

在PL/SQL中,一个函数尝试从查询结果中获取CHAR(20BYTE)类型的商店ID,并将它们存储在一个自定义的表格类型变量中。遇到PLS-00487错误,提示对'CHAR'变量的引用无效。问题可能出在尝试赋值到ReturnOrgs(x):=FDOTemp(x).OrgID这一步,尽管已经确认了数据类型匹配。
摘要由CSDN通过智能技术生成

我正在设计一个功能,它是一个更大的软件包的一部分。该功能旨在获取地区代码并返回分配给该地区的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)数据类型。

那么...什么导致了错误?

任何帮助表示赞赏! :)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值