我被要求创建一个pl / sql过程,它接受select语句作为输入参数。必须从查询中提取所有数据并在DBMS_OUTPUT中打印。
我研究过本机动态SQL和DBMS_SQL,但无法弄清楚如何从结构未知的表中获取和处理数据。
由于表名将在运行时提供,我只想知道如何存储从查询中获取的数据,因为我无法定义变量或集合,因为表的结构是未知的
答案 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一样: - )