命名SQL“for xml explicit”的XML结果列?

时间:2009-10-14 14:14:36

标签: sql sql-server xml tsql

我有一个使用for xml explit返回XML结果的查询。

选择......  来自......  按[BatchType!1!TypeName],[FormType!2!TypeName],Tag,Parent排序  对于xml explicit,root('ClientImages')

但结果列名的名称与

一样神秘

alt text

有没有办法更改列名?


[ANSWER] 我有几个嵌套的WITH语句,所以我保存了查询结果,而没有将FOR XML EXPLICIT应用到临时表@xmlTable中,然后将XML EXPLICIT结果设置为XML然后返回它。 / p>

declare @xmlResult xml
set @xmlResult =(   
    select  * 
    from    @xmlTable
    for xml explicit, root('ClientImages'))

select  @xmlResult as XmlResult

3 个答案:

答案 0 :(得分:17)

- 添加一个select(第一个)和type(在结尾处),并添加[something]


select
    ( 
    select 1    as tag,
    null        as parent,
    'algo'      as [nodo!1!attr]
    for xml explicit, type
    ) as [MyDesiredName]



答案 1 :(得分:7)

不,据我所知,没有。 SQL Server Management Studio将为您的XML自动生成此类名称。

您可以先将输出分配给XML变量,然后选择它以获得“漂亮”的列名称:

DECLARE @XmlResult XML

SELECT @XmlResult = ......
  FROM .......


SELECT @XmlResult

但除此之外,我不知道有任何方法可以影响SSMS生成的列的名称。

马克

答案 2 :(得分:0)

如果您在返回的xml中需要名称空间:

WITH XMLNAMESPACES ('urn:http://YourNamespaceHere' as NS0)
SELECT  ( ... ) AS XmlResult

您也可以在子选择中使用NS0名称空间前缀。