任何人都可以帮我弄清楚这里有什么问题吗? 我想将变量@Customer的值设置为同一行中列的值。我假设我超出范围或某事。标签已插入,但它是空白的。如果我手动将@customer设置为某个东西,那么它会在xml中填充。有一种方法可以做到这一点。
Declare @Customer varchar(500)
UPDATE Ore.RuleInfo
set @Customer=RG.[RuleGroupName], UserEntryXML.modify('
insert
<CustomerName>{sql:variable("@Customer")}</CustomerName>
into (UserEntry/Results/Customer)[1]')
From
Ore.RuleInfo RI
inner join ORE.RuleGroup RG on RG.RuleGroupID = RI.RuleGroupID
答案 0 :(得分:0)
使用sql:column
而不是使用sql:variableDECLARE @tbl TABLE (x XML, customerName VARCHAR(100));
INSERT INTO @tbl
( x, customerName )
VALUES ( '<id>1</id><name>old1</name>', 'customer1' ),
( '<id>2</id><name>old2</name>', 'customer2' ),
( '<id>3</id><name>old3</name>', 'customer3' );
SELECT *
FROM @tbl
UPDATE @tbl
SET x.modify('
replace value of (/name/text())[1]
with sql:column("customerName")
')
SELECT *
FROM @tbl