packageA Body
MEMBER FUNCTION getValue (indx IN PLS_INTEGER) RETURN VARCHAR2
IS
colData packageB.vldtnR
BEGIN
colData := packageB.getColumnData(indx);
--I want to output the id and name from the specified index
END;
packageB Header
TYPE vldtnR IS RECORD(
id PLS_INTEGER;
name VARCHAR2(50)
)
packageB Body
TYPE vldtnArryT IS TABLE OF vldtnR INDEX BY PLS_INTEGER;
vldtnArry vldnArryT;
FUNCTION getColumnData(indx IN PLS_INTEGER) IS
BEGIN
IF vldtnArry.EXISTS(indx) = TRUE THEN
RETURN vldtnArry(indx);
END IF;
END;
代码概述:
vldtnArry属于vldArryT(PackageB正文)
vldtnArryT属于vldtnR(PackageB body)
vldtnR在PackageB标题
中问题:
如何在packageA中输出索引的id和名称?
答案 0 :(得分:2)
在colData
您有记录,您可以直接将记录中的字段称为colData.id
和colData.name
。
答案 1 :(得分:1)
正如马克西姆所说,你有一个colData
变量是一种记录类型,所以你可以将这些字段称为colData.id
和colData.name
。您希望根据varchar2
返回类型和嵌入式注释将两者都作为单个字符串返回,因此您可以这样做:
CREATE PACKAGE BODY packageA AS
FUNCTION getValue (indx IN PLS_INTEGER) RETURN VARCHAR2
IS
colData packageB.vldtnR;
BEGIN
colData := packageB.getColumnData(indx);
return 'Index ' || indx || ' ID ' || colData.id
|| ' name "' || colData.name || '"';
END;
END;
/
将返回类似这样的内容,您可以明显修改为所需的输出:
Index 2 ID 13 name "Thirteen"
您发布的代码还有许多其他问题,希望能在此重新输入。 SQL Fiddle demo编译并让您看到几个索引值的结果,基于手动填充的集合。