小编iam*_*uga的帖子

Oracle关联数组TYPE无法在USING语句中使用(如果在Package中声明TYPE)

如果' 全局声明 '关联数组变量' ,则能够在OPEN CURSOR USING语句中使用它.

如果在包内声明 '关联数组变量' ,则在OPEN CURSOR USING语句中使用时,会出现编译错误.

更多细节如下

我将一些值存储在一个Associative Array变量中.稍后通过将它们带入Cursor来迭代这些值,如下所示,

strQuery := 'select DISTINCT column_value from table(CAST(:v_Assoc_Collection AS AssocArray_Date_t))';
OPEN RefCur_Item FOR strQuery USING v_Assoc_Collection;
Run Code Online (Sandbox Code Playgroud)

这里我使用了关联数组变量'v_Assoc_Collection',这是一种'AssocArray_Date_t'.

如果我在包[ CREATE OR REPLACE TYPE AssocArray_Date_t IS TABLE OF DATE;] 之外声明了类型'AssocArray_Date_t' ,那么它正常工作.

但是,如果我在过程中声明类型,则会出现编译错误.

错误:PLS-00457:表达式必须是SQL类型.在:"OPEN RefCur_Item FOR strQuery USING v_Assoc_Collection;"

错误:PL/SQL:语句被忽略.在:"OPEN RefCur_Item FOR strQuery USING v_Assoc_Collection;"

供参考,代码如下,

    -- Package Declaration
CREATE OR REPLACE PACKAGE AssocTypePackage
AS   
  Type CursorType IS REF CURSOR;      

  PROCEDURE AssocTypeProcedure(name …
Run Code Online (Sandbox Code Playgroud)

arrays oracle types plsql associative

3
推荐指数
1
解决办法
2599
查看次数

标签 统计

arrays ×1

associative ×1

oracle ×1

plsql ×1

types ×1