Sql server 如何将结果从exec分配到变量

Sql server 如何将结果从exec分配到变量,sql-server,exec,varchar,Sql Server,Exec,Varchar,如何将exec命令的结果分配给变量。如下所示,因此当我选择@sql2时,我会得到执行的varchar sql的结果 declare @sql varchar(500) declare @sql2 varchar(max) set @sql = 'SELECT PDB.OutletBrandID, OB.BrandName FROM ProductDistributionBrand PDB

如何将exec命令的结果分配给变量。如下所示,因此当我选择@sql2时,我会得到执行的varchar sql的结果

declare @sql varchar(500)
declare @sql2 varchar(max)
set @sql = 'SELECT 
                PDB.OutletBrandID, OB.BrandName
            FROM 
                ProductDistributionBrand PDB
            INNER JOIN 
                [IND_roadchef].dbo.OutletBrands OB 
            ON 
                PDB.OutletBrandID = OB.OutletBrandID

            FOR XML PATH(''ProductDistributionBrandDetail''),ROOT(''ProductDistributionBrandDetails''),TYPE'    
--select @sql
set @sql2 = exec(@sql)  
select @sql2            

您可以使用表变量。试着这样,

DECLARE @sql TABLE (col1 VARCHAR(500))
DECLARE @sql2 VARCHAR(max)

SET @sql2 = 'SELECT 
                PDB.OutletBrandID, OB.BrandName
            FROM 
                ProductDistributionBrand PDB
            INNER JOIN 
                [IND_roadchef].dbo.OutletBrands OB 
            ON 
                PDB.OutletBrandID = OB.OutletBrandID

            FOR XML PATH(''ProductDistributionBrandDetail''),ROOT(''ProductDistributionBrandDetails''),TYPE'

INSERT INTO @sql
EXEC (@sql2)

SELECT *
FROM @sql

您可以使用表变量。试着这样,

DECLARE @sql TABLE (col1 VARCHAR(500))
DECLARE @sql2 VARCHAR(max)

SET @sql2 = 'SELECT 
                PDB.OutletBrandID, OB.BrandName
            FROM 
                ProductDistributionBrand PDB
            INNER JOIN 
                [IND_roadchef].dbo.OutletBrands OB 
            ON 
                PDB.OutletBrandID = OB.OutletBrandID

            FOR XML PATH(''ProductDistributionBrandDetail''),ROOT(''ProductDistributionBrandDetails''),TYPE'

INSERT INTO @sql
EXEC (@sql2)

SELECT *
FROM @sql
使用输出参数:

declare @sql nvarchar(500)
declare @xml XML

set @sql = 'set @xml = (SELECT ..... FOR XML PATH(''ProductDistributionBrandDetail''),ROOT(''ProductDistributionBrandDetails''),TYPE)'    

EXEC sp_executesql @sql, N'@xml XML output', @xml = @xml OUTPUT

select @xml
使用输出参数:

declare @sql nvarchar(500)
declare @xml XML

set @sql = 'set @xml = (SELECT ..... FOR XML PATH(''ProductDistributionBrandDetail''),ROOT(''ProductDistributionBrandDetails''),TYPE)'    

EXEC sp_executesql @sql, N'@xml XML output', @xml = @xml OUTPUT

select @xml

请参阅此链接中的参考,它将向您展示如何使用输出参数


请参阅此链接中的参考资料,它将向您展示如何使用输出参数


请发布您的示例输出请发布您的示例输出似乎类似于似乎类似于select@xml返回Null的结果select@xml返回Null的结果您的答案本身不提供和回答问题,链接应补充答案,而不是全部答案。因此,尽管你发布的链接很有用,或多或少回答了这个问题,但你的答案至少应该是文章的摘要,并包括与这个特定问题相关的内容,以便在网站移动或关闭的情况下,你的答案对未来的访问者仍然有用。你的答案本身并不提供问题的答案,链接应该是答案的补充,而不是答案的全部。因此,尽管你发布的链接很有用,或多或少地回答了这个问题,但你的答案至少应该是文章的摘要,并包括与这个特定问题相关的内容,这样在网站移动或关闭的情况下,你的答案对未来的访问者仍然有用。