在Oracle中使用xml连接任意字段

时间:2011-11-10 11:24:15

标签: xml oracle concatenation

我在这里使用的是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方式..

1 个答案:

答案 0 :(得分:0)

我不知道任何构建函数可以让你这样做(听起来你实际上想要将表导出为CSV?在这种情况下,有各种工具可以做到这一点)。您需要编写一个函数来执行您想要的操作,这应该不会太困难。可能值得一看这个ask tom thread,看看它是否会帮助你。