2011-10-30 3 views
1

Je reçois l'erreur ci-dessous lorsque j'utilise cette syntaxe. Je veux être en mesure de passer l'argument à la fonction nœuds: -Passage d'un argument à la méthode des nœuds T-SQL (XML CROSS APPLY)

CROSS APPLY XML_TPYE_COLUMN.nodes(@p_Xpath) AS Tab(Col) 

Erreur:

The argument 1 of the XML data type method "nodes" must be a string literal. 

Quelqu'un peut-il me dire comment puis-je faire cela correctement?

Répondre

1

Vous devrez le faire via SQL dynamique car le paramètre pour les nœuds doit être un littéral de chaîne. Ceci est similaire à ce que vous faites lorsque vous faites sp_executesql.

En d'autres termes, vous devez construire votre déclaration toute sql nvarchar (max) et le transmettre à sp_executesql:

DECLARE @statement nvarchar(max)= N'select ... CROSS APPLY col.nodes('[email protected]_Xpath+') AS Tab(Col)' 

execute sp_executesql [email protected] 
Questions connexes