【发布时间】:2011-09-22 12:18:46
【问题描述】:
我有一个 MS SQL 2008 R2 标准数据库。我有一个包含varchar(250) 数据的列和一个包含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这样的字符串列... -
我已经编辑了我的问题。现在应该更清楚了。
标签: sql-server xml tsql sql-server-2008-r2 xml-dml