Oracle11g 作为参数PLS-00382的显式光标传递表
我有一个UDT类型的表作为参数的函数。该函数的目标是将JSON clob返回到调用环境。遗憾的是,编译包体时出现错误: 包体JOHN.packageA的编译错误#13#10错误: PLS-00382:表达式类型错误行:8文本:来自人员 其中id为v_id的成员 不能将运算符的成员与关联数组一起使用吗?我应该采取什么不同的方法Oracle11g 作为参数PLS-00382的显式光标传递表,oracle11g,user-defined-types,Oracle11g,User Defined Types,我有一个UDT类型的表作为参数的函数。该函数的目标是将JSON clob返回到调用环境。遗憾的是,编译包体时出现错误: 包体JOHN.packageA的编译错误#13#10错误: PLS-00382:表达式类型错误行:8文本:来自人员 其中id为v_id的成员 不能将运算符的成员与关联数组一起使用吗?我应该采取什么不同的方法 CREATE OR REPLACE Package packageA As TYPE ids_tbl is Table of Number(10) INDEX BY
CREATE OR REPLACE Package packageA As
TYPE ids_tbl is Table of Number(10) INDEX BY PLS_INTEGER;
function get_people_json (p_custIds in ids_tbl) return clob;
End;
CREATE OR REPLACE Package Body PackageA As
function get_people_json (p_custIds in ids_tbl)
return clob
is
cursor people_cur(v_ids ids_tbl) select * from persons where id member of v_ids;
TYPE people_aat IS TABLE OF people_cur%ROWTYPE
INDEX BY PLS_INTEGER;
....
Begin
open people_cur(p_custIds);
....
return l_clob;
End;
End;
问候
MagnusUDT是模式级别的类型(不确定是否在任何地方定义了它,但至少它是如何使用的);您有一个关联数组,它是PL/SQL集合类型,不能在11g的SQL语句中使用这些数组。那么,您必须使用您定义的类型,还是可以控制/修改它?这在一定程度上取决于谁来称呼它,以及他们将如何称呼它。然后您可以创建自己的模式级别类型吗?如果没有,还有一些内置的。谢谢Alex的输入。您能否明确指出哪些内置类型可用?。如果可以,请坚持使用支持/记录的类型。