2009-10-14 13 views
8

Tengo una consulta que usa for xml explit para devolver el resultado XML.Columna de resultados XML del nombre de TSQL "para XML explícito"?

seleccione ... de ... fin por [BatchType! 1! TypeName], [FormType! 2! TypeName], etiqueta, Padres para XML explícita, raíz ('ClientImages')

pero el nombre del nombre de la columna resultante es algo tan críptico que

alt text

¿hay una manera de cambiar el nombre de la columna?


[RESPUESTA] tuve un varios anidado WITH declaraciones por lo que he guardado el resultado de la consulta sin aplicar FOR XML EXPLICIT en una tabla temporal @xmlTable y luego configurar el XML resultado explícita a un XML luego devolvió .

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

select @xmlResult as XmlResult 
+1

¿qué versión de SQL Server estás usando? EN 2005 y en adelante, definitivamente no hay necesidad de "FOR XML EXPLICIT" - FOR XML PATH es mucho más fácil de usar y mucho mejor –

+0

SQL Server 2005/2008 – Sung

+0

@marc_s: Tengo una estructura complicada para la que no pude representar utilizando FOR RUTA XML. – Sung

Respuesta

7

No, no hay, hasta donde yo sé. SQL Server Management Studio generará automáticamente dicho nombre para su XML.

Usted puede ser capaz de asignar a su salida a una variable XML y luego seleccione que para conseguir un "buen" nombre de la columna:

DECLARE @XmlResult XML 

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


SELECT @XmlResult 

pero aparte de eso, no estoy al tanto de ninguna manera para influir en el nombre de la columna generada por SSMS.

Marc

+1

En lugar de reestructurar sentencias 'WITH', simplemente pongo el resultado (sin aplicar' FOR XML EXPLIT') en una tabla temporal y luego simplemente lo devuelvo como XML desde la tabla temporal - Answer updated. – Sung

17

- añadir un tipo de selección (primero) y (en el extremo), y como [algo]

 

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



0

Si necesita espacios de nombres en el XML devuelto:

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

También puede usar el prefijo de espacio de nombres NS0 en la selección secundaria.

Cuestiones relacionadas