我在这里使用的是Oracle 10gR2。
我希望能够创建select * from TABLE
并将输出放在一行中,所有列都由分隔符连接。
根据我的发现,XML处理似乎是最好的方法。所以我有这个问题:
select dbms_xmlgen.getxml('select * from MY_TABLE') from dual;
将返回XML代码。我现在需要的是将XML处理成最终记录。一个例子可能会有所帮助:
通常的查询是:
select * form MY_TABLE
将返回:
Col1 | Col2 | Col3
a | b | c
z | x | y
现在我想做一个像
这样的查询select somesxmlprocessing(dbms_xmlgen.getxml('select * from MY_TABLE'), ',') as rows
from dual
结果现在是:
rows
a,b,c
z,x,y
诀窍是我以前不知道该表有哪些列。即,无论表中有多少个字段,它总是select * from
。
P.S .:
我找到了一个使用聚合函数的解决方案,而不是all_tab_columns
中的数据。令人讨厌的是它分两步执行:首先生成一个select然后执行它。工作,但我仍然想知道一枪xml方式..
答案 0 :(得分:0)
我不知道任何构建函数可以让你这样做(听起来你实际上想要将表导出为CSV?在这种情况下,有各种工具可以做到这一点)。您需要编写一个函数来执行您想要的操作,这应该不会太困难。可能值得一看这个ask tom thread,看看它是否会帮助你。