【发布时间】:2015-10-01 15:07:37
【问题描述】:
所以通常使用* 表示您想要所有列或M.* 如果您想要别名为M 的表中的所有列,但这似乎在@987654324 中不起作用DB2 的 @ 函数。但是,按名称列出所需的列是可行的(我正在使用R 中的RODBC 驱动程序):
qry <- "
SELECT XML2CLOB(
XMLELEMENT(NAME \"my_object\",
XMLATTRIBUTES(M.COLUMN1 AS \"column_1\", M.COLUMN2)
)) as xml
FROM MYTABLE M
fetch first 100 rows only
"
结果:
XML
1: <my_object column_1="1000002" COLUMN2="1"/>
2: <my_object column_1="1000003" COLUMN2="2"/>
3: <my_object column_1="1000004" COLUMN2="1"/>
4: <my_object column_1="1000005" COLUMN2="2"/>
5: <my_object column_1="1000006" COLUMN2="2"/>
...
我无法推广到所有列,如以下查询:
qry <- "
SELECT XML2CLOB(
XMLELEMENT(NAME \"my_object\",
XMLATTRIBUTES(M.*)
)) as xml
FROM MYTABLE M
fetch first 100 rows only
"
结果:
V1
1: 42601 -104 [IBM][CLI Driver][DB2] SQL0104N An unexpected token "*" was found following "*". Expected tokens may include: "NEXTVAL CURRVAL". SQLSTATE=42601\r\n
2: [RODBC] ERROR: Could not SQLExecDirect '\nSELECT XML2CLOB(\n XMLELEMENT(NAME "claim",\n XMLATTRIBUTES(F.*)\n )) as xml\n FROM LRD.FEA F\n where F.CPU_STMP_DT_CEN = 20\n and F.CPU_STMP_DT_YR = 13\nfetch first 100 rows only\n'
我不确定* 快捷方式是否在XMLATTRIBUTES 内部不受支持,或者我应该构建自己的某种别名,将列名粘贴到XMLATTRIBUTES 中,但我不知道该怎么做.
此外,如果每个列名值都是嵌套在my_object 中的自己的XMLELEMENT,我会接受。
【问题讨论】: