将执行结果存储在变量中并将其连接起来以形成完整查询的动态SQL

问题描述 投票:0回答:1

我正尝试如下进行完整查询

DECLARE @SQLFinal NVARCHAR(MAX)
DECLARE @SQLAlias NVARCHAR(MAX)='SELECT '',''+cast(ColumnName as varchar(20)) + '' as '' + cast(ColAliasName as varchar(20)) collate Latin1_General_CI_AS from #colandAlias' 
DECLARE @SQLAliasResult NVARCHAR(MAX)
EXEC sp_executesql @SQLAlias= @SQLAliasResult OUTPUT
select  @SQLAliasResult 

-将sp_execute结果分配给变量@SQLAliasResult。它给出NULL而不是exec结果

-目的是将以上结果(@SQLAliasResult)与belwo查询部分合并在一起,以形成完整的查询

set @SQLFinal='SELECT

ID,Name,custid '

+@SQLAliasResult+
' FROM dbo.tableCustomer where custid=71'

-如何在变量中分配查询执行结果并实现此目标?

sql sql-server tsql sql-server-2012 dynamic-sql
1个回答
0
投票

我认为第2行中不需要动态查询,我看不到任何动态字段。另外,我认为您需要这样的东西:

DECLARE @Columns TABLE(
    ColumnName SYSNAME
)

INSERT INTO @Columns VALUES ( 'Column1' ), ( 'Column2' );

DECLARE @SelectString   VARCHAR(255)

-- This is the sentence that is going to concat everything
SELECT  @SelectString = ISNULL( @SelectString + ', ', '' ) + ColumnName
    FROM @Columns;

-- Execute this or do what you need
SELECT @SelectString;
© www.soinside.com 2019 - 2024. All rights reserved.