sql-server - 是否可以使用变量设置使用 FOR XML PATH 的选择语句中的 ROOT 元素?

标签 sql-server xml

我有一个创建 xml 文件的查询。目前,我对 ROOT 元素进行了硬编码。我想使用变量值来设置此根元素值,但用变量替换硬编码字符串会引发语法错误,即 expecting a string。这是选择语句:

DECLARE @SelectResults XML
DECLARE @DatabaseName varchar(100) 
SELECT @DatabaseName = DB_NAME();

    SET @SelectResults =
    ( 
    SELECT...query results here...
    FOR XML PATH(''),
    ROOT(@DatabaseName) --when this is set to 'DatabaseName' it works
    )

我可以在函数 ROOT() 中使用变量吗?

最佳答案

您可以在单独的替换中对 XML 输出进行替换:

DECLARE @SelectResults XML
DECLARE @DatabaseName varchar(100) 
SELECT @DatabaseName = DB_NAME();

    SET @SelectResults =
    replace( 
        SELECT...query results here...
        FOR XML PATH(''),
        ROOT('ROOT_ELEMENT') --when this is set to 'DatabaseName' it works
    ), 'ROOT_ELEMENT>',@DatabaseName+'>' )

关于sql-server - 是否可以使用变量设置使用 FOR XML PATH 的选择语句中的 ROOT 元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39457370/

相关文章:

java - RadioGroup 导致 Android 应用程序崩溃?

php - 更好的做法 : Placing the load on SQL or Web server?

sql-server - 我怎样才能按时运行一次程序?

sql - 如何解码 SQL 中的 XML 实体?

java - 有效的 XML 文档必须有根标签

PHP 使用 SimpleXML 处理命名空间

sql-server - 如何在没有实际部署的情况下测试是否可以部署 DACPAC

sql-server - Sql - FOR XML 路径查询问题

mysql - erlang mysql 结果到 xml

android - 下面的屏幕截图我必须使用哪种布局