【问题标题】:SQL XQuery - Insert an integer sql variable value into an xml variableSQL XQuery - 将整数 sql 变量值插入 xml 变量
【发布时间】:2012-06-06 09:44:28
【问题描述】:

我收到了这个查询:

DECLARE @UserId INT
DECLARE @StateChangeInformation XML

SET @UserId = 1
SET @StateChangeInformation = '<stateChangeInformation EnableOverrideMarking="1"></stateChangeInformation>'
SET @command = 'DECLARE @UserIdXml XML; SET @UserIdXml = ''<userID>{ sql:variable("@UserId") }</userID>''; SET @StateChangeInformation.modify(''insert sql:variable("@UserIdXml") into (/stateChangeInformation)[1]'')'

EXEC sp_executesql @stmt = @command,
                   @params = N'@StateChangeInformation xml out',
                   @StateChangeInformation= @StateChangeInformation OUTPUT

SELECT @StateChangeInformation

我想要做的是将 XML 输出为:

<stateChangeInformation>
  <userID>1</userID>
</stateChangeInformation>

目前,我得到以下输出:

<stateChangeInformation EnableOverrideMarking="1">
  <userID>"{ sql:variable("@UserId") }"</userID>
</stateChangeInformation>

请帮忙!

【问题讨论】:

    标签: sql sql-server-2008 xquery-sql


    【解决方案1】:

    您需要将@UserId 作为参数发送到动态SQL 并使用连接来获取XML 中的值。

    DECLARE @command nvarchar(max)
    DECLARE @UserId INT
    DECLARE @StateChangeInformation XML
    
    SET @UserId = 1
    SET @StateChangeInformation = '<stateChangeInformation EnableOverrideMarking="1"></stateChangeInformation>'
    SET @command = 'DECLARE @UserIdXml XML; 
                    SET @UserIdXml = ''<userID>''+cast(@UserId as varchar(10))+''</userID>''; 
                    SET @StateChangeInformation.modify(''insert sql:variable("@UserIdXml") into (/stateChangeInformation)[1]'')'
    
    EXEC sp_executesql @stmt = @command,
                       @params = N'@StateChangeInformation xml out, @UserId int',
                       @StateChangeInformation= @StateChangeInformation OUTPUT, @UserId = @UserId
    
    SELECT @StateChangeInformation
    

    【讨论】:

    • 是的,我已经想通了。我完全按照你说的做了,所以我会将你的标记为答案:D 无论如何谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-26
    • 1970-01-01
    • 1970-01-01
    • 2013-11-10
    相关资源
    最近更新 更多