使用xml将UP变量中的SQL变量设置为等于列

时间:2015-03-06 16:55:34

标签: sql-server xml

任何人都可以帮我弄清楚这里有什么问题吗? 我想将变量@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

1 个答案:

答案 0 :(得分:0)

使用sql:column

而不是使用sql:variable
DECLARE @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