som*_*ool 1 sql sql-server-2008
有没有办法将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
Run Code Online (Sandbox Code Playgroud)
您需要使用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;
Run Code Online (Sandbox Code Playgroud)