2010-11-27 3 views
1

Je passe une variable de type XML d'une procédure à une autre.Comment savoir combien de colonnes proviennent de la variable XML dans SQL Server 2005

Set Dans certains cas, je dois envoyer un autre « Etat » colonne à une autre procédure comme ci-dessous

set @XMLDOC = (select 60 as RecordDetailID,    
         '' as ItemText,    
         '' as ItemNote,    
         0 as DisplayOrder, 
         1 as Status 
       FOR XML RAW) 
XML variables comme celui-ci

Declare @XMLDOC XML 

set @XMLDOC = (select 60 as RecordDetailID,    
         '' as ItemText,    
         '' as ItemNote,    
         0 as DisplayOrder       
       FOR XML RAW) 

Comment je savoir combien de colonnes ont été envoyées à mon la variable XML Type?

Répondre

2

Vous pouvez utiliser la méthode nodes() pour compter les attributs XML:

select count(1) from @XMLDOC.nodes('row/@*') as T(c); 
+0

merci beaucoup qui est utile pour moi. juste pour savoir quelle est la signification du compte (1)? – KuldipMCA

+0

@KuldipMCA, 'count (1)' est un artefact de PL/SQL. Cela améliore les performances car PL/SQL récupère toutes les lignes en mémoire avant de les compter si vous utilisez 'count (*)'. T-SQL n'a pas ce problème, donc, les deux formes sont équivalentes, j'ai seulement utilisé 'count (1)' par habitude :) Voir http://social.msdn.microsoft.com/Forums/en-US/transactsql/thread/9367c580-087a-4fc1-bf88-91a51a4ee018 /. –

Questions connexes