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

在Oracle中使用xml连接任意字段,xml,oracle,concatenation,Xml,Oracle,Concatenation,我在这里使用的是Oracle 10gR2 我希望能够创建一个select*from表,并在一行中获得输出,所有列都由分隔符连接 根据我的发现,XML处理似乎是最好的方法。所以我有一个疑问: select dbms_xmlgen.getxml('select * from MY_TABLE') from dual; 它将返回一个XML代码。我现在需要的是将XML处理成最终记录。举个例子可能会有所帮助: 通常的查询是: select * form MY_TABLE 将返回: Col1 | C

我在这里使用的是Oracle 10gR2

我希望能够创建一个select*from表,并在一行中获得输出,所有列都由分隔符连接

根据我的发现,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
诀窍是我以前不知道表有哪些列。i、 e.无论有多少字段有一个表,它都将始终是一个select*from

p、 s:
我已经找到了一个解决方案,使用聚合函数对所有列中的数据进行聚合,这是一种可行的方法。恼人的是,它分两步执行:首先生成一个select,然后执行它。工作正常,但我仍然想知道一次性xml方式。

我不知道有任何内置函数可以让您这样做,听起来您实际上想将表导出为CSV,在这种情况下,可以使用各种工具来实现这一点。你需要写一个函数来做你想做的事情,这应该不会太难。也许值得一读,看看它是否对你有帮助。

你能详细解释一下你的意思吗,我不太理解最后一段。@MatthewWatson当然明白!给你。如果我遗漏了什么,请告诉我。是的,这很相似,但不完全是我正在做的出口。它不会直接转储到文件中。我得先处理一下绳子。我从这篇文章中获得了XML的想法问Tom:另外,我以前使用过XML函数进行字符串聚合,从这里开始,它们工作得很好: