2012-05-01 18 views
1

に格納する方法は、exec文の結果をvarcharに格納する方法ですか?動的SQLの結果を変数

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 

答えて

6

あなたは(あなたがEXECを行うことはできません)出力パラメータとして内部変数を扱う必要があるので、sp_executesql、ない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; 
関連する問題