2010-03-30 6 views
0

Voici le code ci-dessous qui expliqueriez-vous le problème ...ne peut pas insérer xml expression DML comme une chaîne

créer un tableau ci-dessous avec une colonne xml et déclarer une variable, initialiser et insérez le valeur dans la colonne xml,

create table CustomerInfo 
(XmlConfigInfo xml) 

declare @StrTemp nvarchar(2000) 

set @StrTemp = '<Test></Test>' 

insert into [CustomerInfo](XmlConfigInfo) 
values (@StrTemp) 

Puis vient la partie de la question ,, si j'écris ceci ...

update [CustomerInfo] set XmlConfigInfo.modify('insert <Info></Info> into (//Test)[1]') 

- fonctionne très bien !!!

mais lorsque je tente cela,

set @StrTemp = 'insert <Info></Info> into (//Test)[1]' 

update [CustomerInfo] set XmlConfigInfo.modify(@StrTemp) 

- ne fonctionne pas !!!

et déclenche une erreur

L'argument de la méthode 1 de type de données XML « Modifier » doit être une chaîne littérale.

Y a-t-il un moyen de contourner celui-ci?

J'ai essayé this, mais il ne fonctionne pas :(

Répondre

0

comme il vient habituellement, SQL dynamique est quelque chose qui est toujours venu à mon secours :)

mais beaucoup à mon anxiété, compte tenu de t -sql est interprété, pourquoi ne pas faire de tsql plus comme un langage dynamique lui-même, quelqu'un peut-il suggérer pourquoi taper si fort dans t-sql?

ici est le link qui a quelques solutions d'options en ce qui concerne le problème,

Solution I utilisé:

Exécuter @StrQuery sp_executesql

Questions connexes