Dernièrement, je suis époustouflé par xml pour SQL Server, mais celui-ci ici me fait noixPourquoi cette requête XML dans SQL Server fonctionne pas
DECLARE @xml XML;
SET @xml = '
<ROOT>
<Object>
<FooProperty1>123</FooProperty1>
<FooProperty2>456</FooProperty2>
</Object>
<Object>
<FooProperty1>123</FooProperty1>
<FooProperty2>456</FooProperty2>
</Object>
</ROOT>
';
SELECT [doc].[FooProperty1].value('.', 'INT') AS [fooProperty1],
[doc].[FooProperty2].value('.', 'INT') AS [fooProperty2]
FROM @xml.nodes('/ROOT/Object')
AS [doc]
(
[FooProperty1],
[FooProperty2]
)
Ça me donne
Msg 8159, niveau 16 , État 1, ligne 22 'doc' contient moins de colonnes que celles qui étaient spécifiées dans la liste des colonnes.
Est-ce msg ne change pas si je change changer @xml
comme
SET @xml = '
<ROOT>
<Object FooProperty1="123" FooProperty2="456"/>
<Object FooProperty1="123" FooProperty2="456"/>
</ROOT>
';
Cette approche ne fonctionne que si j'utilise le premier motif avec des éléments supplémentaires pour chaque colonne ... Pourriez-vous me donner un exemple pour le deuxième motif? –
Merci beaucoup! .... –
@Andreas Niedermair: mis à jour ma réponse pour gérer aussi votre deuxième scénario (avec des attributs XML) –