我有一个MS SQL 2008 R2标准数据库。我有一列varchar(250)
数据和一列xml
。如何使用T-SQL内置函数的值更新XML列?
CREATE TABLE [dbo].[art](
[id] [int] IDENTITY(1,1) NOT NULL,
[idstr] [varchar](250) NULL,
[rest] [xml] NOT NULL,
CONSTRAINT [PK_art] PRIMARY KEY CLUSTERED ([id] ASC)
)
问题是我想插入一个字符串函数的结果到XML中,在约140条记录。我试图用动态生成的文本使用xml.modify
。
UPDATE [pwi_new].[dbo].[art]
SET rest.modify('insert <e><k>link</k><v>'
+ my_string_function(idstr) + '</v></e> into (/root)[1]')
WHERE parent = 160
AND idstr LIKE '%&%'
GO
不过,我得到这个错误:
The argument 1 of the XML data type method "modify" must be a string literal.
任何想法?我想避免使用时态字段,外部语言和从生成的字符串执行TSQL? (我听说过sql:variable
和sql:column
,但这是TSQL函数的结果。)
你能告诉的东西类似于你想要做什么?现在它非常抽象。你也可以指定SQL Server的版本,以及列是否真的是不赞成使用的类型'TEXT'或者你的意思是一个字符串列如'VARCHAR' /'NVARCHAR' ... –
我编辑了我的问题。现在应该更清楚了。 – Michas