8
votes

Nom XML Résultat Colonne de SQL "pour XML Explicit"?

J'ai une requête qui utilise pour xml exploit code> pour renvoyer le résultat XML.

Sélectionnez ... de ... Commandez par [Batchtype! 1! Typename], [FormType! 2! Typename], tag, parent Pour XML Explicit, root ('ClientImages') P>

Mais le nom du nom de colonne résultant est quelque chose comme cryptique que p>

 Texte alt P>

est-il un moyen de modifier le nom de la colonne? strong> P>


[réponse] strong> J'ai eu plusieurs autres avec code> des instructions code>, donc j'ai enregistré le résultat de la requête sans appliquer pour xml explicite code> dans une table TEMP @xmltable code> puis défini Le résultat explicite XML à un XML a ensuite renvoyé. P>

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

select  @xmlResult as XmlResult


2 commentaires

Quelle version de SQL Server utilisez-vous ?? En 2005 et en hausse, il n'est certainement plus besoin de "pour xml explicite" - pour le chemin XML est beaucoup plus facile à utiliser et beaucoup mieux


@marc_s: J'ai une structure compliquée pour laquelle je ne pouvais pas représenter en utilisant le chemin XML.


3 Réponses :


7
votes

Non, il n'y a pas, autant que je sache. SQL Server Management Studio va autogénérer un tel nom pour votre XML.

Vous pourrez peut-être d'abord attribuer votre sortie à une variable XML, puis sélectionnez celle-ci pour obtenir un "Nice" Nom de colonne: P>

DECLARE @XmlResult XML

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


SELECT @XmlResult


1 commentaires

Au lieu de restructuration avec , je viens de mettre le résultat (sans appliquer pour xml exploit ) dans une table temporelle, puis je l'ai simplement renvoyé sous forme XML de TEMP TABLE - Réponse mise à jour.



17
votes

- Ajoutez une sélection (d'abord) et tapez (à la fin), et comme [quelque chose] xxx


0 commentaires

0
votes

Si vous avez besoin d'espaces de noms dans votre fichier XML retourné:

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


0 commentaires