1

这是我试图定义的交易MY_VARIABLE,它是一种类型MY_TABLE%ROWTYPE

问题是它MY_TABLE是动态的,我将它作为varchar2变量接收,所以像

 TYPE my_variable 
   IS TABLE OF my_table%ROWTYPE;

不会工作,因为 PACKAGE BODY DENNIS.XXPORTER 的编译错误

'YOUR_TABLE_NAME' 必须命名表、游标或游标变量

现在,我该如何处理?

PSI 需要my_variableref cursor. 而且我ref cursor没有使用 a cursor,因为我执行了一个查询,其中表名 (in from clause) 是一个变量

4

1 回答 1

2

您不能声明其数据类型直到运行时才知道的变量。

如果您尝试使用动态 SQL,其中结果集的结构也是动态的(如果传入的任何表的列数及其数据类型是固定的,则可以静态声明适当类型的记录变量) ,那么您实际上需要使用DBMS_SQL来执行语句,收集有关返回的列的数据,并绑定可以获取数据的适当变量。

DBMS_SQL您可以在 Tom Kyte 的dump_csv函数中看到一个使用包的示例,该函数将任意 SQL 语句的结果转储到文件中。

于 2013-06-25T14:48:14.013 回答