有没有办法将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
答案 0 :(得分: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;