1

execステートメントの結果をvarcharに格納する方法はありますか?

DECLARE @TableName varchar(100)
DECLARE @ExecStatement varchar(max)
DECLARE @PromotionXML varchar(max) 

SET @TableName = 'Feeds'

Set @ExecStatement = (
'
SET @PromotionXML = (
SELECT
    *
FROM
    ' + @TableName + ' for xml auto, elements 
    )'
)


exec @ExecStatement


select @PromotionXML
4

1 に答える 1

6

sp_executesql内部変数を出力パラメーターとして扱う必要があるため、ではなく、を使用する必要がEXECあります(これはで行うことはできませんEXEC)。また、これらのパラメーターはすべて、そうNVARCHARではないはずVARCHARです(ただし、なぜxmlをとして返さないのか不思議ですXML)。

DECLARE 
    @TableName NVARCHAR(512),
    @sql NVARCHAR(MAX),
    @xml NVARCHAR(MAX);

SET @TableName = N'dbo.Feeds';

SET @sql = N'SELECT @xml = CONVERT(NVARCHAR(MAX), (
    SELECT * FROM ' + @TableName + ' FOR XML AUTO, ELEMENTS));';

EXEC sp_executesql @sql, N'@xml NVARCHAR(MAX) OUTPUT', @xml OUTPUT;

SELECT @xml;
于 2012-05-01T17:56:43.990 に答える