以下是我尝试定义的MY_VARIABLE
交易,其类型为MY_TABLE%ROWTYPE
。
问题在于MY_TABLE
是动态的,我将其作为varchar2
变量接收,因此类似
TYPE my_variable
IS TABLE OF my_table%ROWTYPE;
不会工作,因为 PACKAGE BODY DENNIS.XXPORTER
的编译错误'YOUR_TABLE_NAME'必须命名表格,光标或光标变量
现在,我该如何处理?
我需要my_variable
来从ref cursor
获取记录。我使用ref cursor
而不是cursor
,因为我执行了一个查询,其中表名(在from clause
中)是一个变量
答案 0 :(得分:2)
在运行时之前,不能声明其数据类型未知的变量。
如果您尝试使用动态SQL,其中结果集的结构也是动态的(如果传入的任何表的列数及其数据类型都是固定的,则可以静态声明一个记录变量适当的类型),那么你实际上需要使用DBMS_SQL
package来执行语句,收集有关返回的列的数据,并绑定可以获取数据的适当变量。
您可以看到在Tom Kyte的dump_csv
function中使用DBMS_SQL
包将一个任意SQL语句的结果转储到文件中的示例。