Oracle11g 作为参数PLS-00382的显式光标传递表

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

我有一个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 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;
问候
Magnus

UDT是模式级别的类型(不确定是否在任何地方定义了它,但至少它是如何使用的);您有一个关联数组,它是PL/SQL集合类型,不能在11g的SQL语句中使用这些数组。那么,您必须使用您定义的类型,还是可以控制/修改它?这在一定程度上取决于谁来称呼它,以及他们将如何称呼它。然后您可以创建自己的模式级别类型吗?如果没有,还有一些内置的。谢谢Alex的输入。您能否明确指出哪些内置类型可用?。如果可以,请坚持使用支持/记录的类型。