如果' 全局声明 '关联数组变量' ,则能够在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)