使用另一个动态变量定义变量类型。神谕。 pl sql

时间:2013-06-25 14:28:34

标签: sql oracle plsql cursor sys-refcursor

以下是我尝试定义的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中)是一个变量

1 个答案:

答案 0 :(得分:2)

在运行时之前,不能声明其数据类型未知的变量。

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

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