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

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
    )

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

最佳答案

您可以在一个单独的replace中对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+'>' )

10-05 17:40