如何从oracle表中动态获取数据,其结构只在运行时使用pl sql过程知道?

时间:2013-04-13 06:55:09

标签: sql oracle plsql procedure

我被要求创建一个pl / sql过程,它接受select语句作为输入参数。必须从查询中提取所有数据并在DBMS_OUTPUT中打印。

我研究过本机动态SQL和DBMS_SQL,但无法弄清楚如何从结构未知的表中获取和处理数据。

由于表名将在运行时提供,我只想知道如何存储从查询中获取的数据,因为我无法定义变量或集合,因为表的结构是未知的

2 个答案:

答案 0 :(得分:2)

首先,这个要求似乎令人难以置信的可疑。您永远不应该依赖于写入DBMS_OUTPUT缓冲区的数据 - 完全取决于客户端启用缓冲区,确保缓冲区足够大,并将数据从缓冲区显示到用户。默认情况下,这些都不会发生。编写一个程序来操作一个结构完全未知的表格将是非常不寻常的。

但是,如果您确实如此,那么您可能希望将Tom Kyte的SQL Unloader使用DBMS_SQL将任意查询中的数据写入平面文件并修改它以将其写入{ {1}}而不是。

答案 1 :(得分:0)

有一个开源实用程序包,用于在PL / SQL中生成Excel可读文件。

https://code.google.com/p/plsql-utils/

但是,如果可能的话,我建议您考虑使用更通用的语言。 PL / SQL对数据库逻辑非常有用,但是为了与外界交互,我希望你能用Python或Java之类的东西来实现更易维护的解决方案。

虽然和YMMV一样: - )