SQL Server: OPENXML vs SELECT..à PARTIR de quand vous traitez avec XML?

J'ai ce xml :

DECLARE @x XML
SET @x = 
    '<data>
       <add>a</add>
       <add>b</add>
       <add>c</add>
     </data>';

Tâche :

Je veux la liste de la a,b,c.

approche 1 :

SELECT s.value('.', 'VARCHAR(8000)') AS [ADD]
FROM   @x.nodes('/data/add') AS t(s) 

approche 2:

DECLARE @idoc INT
EXEC sp_xml_preparedocument @idoc OUTPUT, @x

SELECT *
FROM   OPENXML(@idoc, '/data/add', 2)
       WITH ([add] NVARCHAR(MAX) '.')

deux d'entre eux de me donner :

SQL Server: OPENXML vs SELECT..à PARTIR de quand vous traitez avec XML?

question :

qui est le moyen préféré ?

Est-il un des avantages de ce dernier vs ancien ( ou vice-versa) ?

Personnellement, je préfère l'approche #1 - c'est beaucoup plus intuitif pour moi, et il ne nécessite pas d'étapes supplémentaires de sp_xml_preparedocument etc. - tout simplement plus facile à utiliser
Et avec ce que ... c'est #1 peut être utilisé dans les Vues et les.

OriginalL'auteur Royi Namir | 2012-03-08