2010-11-27 4 views
1

Ich übergeben XML-Typ-Variable von einer Prozedur zu einer anderen Prozedur.Woher wissen wir, wie viele Spalten stammen aus XML-Variable in SQL Server 2005

Set XML-Variable wie diese

Declare @XMLDOC XML 

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

In einigen Fällen ich wie eine weitere Spalte „Status“ auf ein anderes Verfahren senden müssen unter

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

Wie ich weiß, würde, wie viele Spalten gesendet wurden, Zu meiner XML-Typ-Variable?

Antwort

2

können Sie die nodes() Methode verwenden XML-Attribute zu zählen:

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

Dank, dass für mich nützlich ist. nur um zu wissen, was bedeutet count (1)? – KuldipMCA

+0

@KuldipMCA, 'count (1)' ist ein Artefakt von PL/SQL. Es verbessert die Performance, da PL/SQL alle Zeilen im Speicher abruft, bevor sie gezählt werden, wenn Sie 'count (*)' verwenden. T-SQL hat jedoch dieses Problem nicht, also sind beide Formen gleichwertig, ich habe nur aus Gewohnheit "count (1)" verwendet :) Siehe http://social.msdn.microsoft.com/Forums/en-US/transactsql/thread/9367c580-087a-4fc1-bf88-91a51a4ee018 /. –