如何使用动态 SQL 获取值

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

我有如下查询,按要求执行。

DECLARE @count varchar(20)
SET @count = (SELECT COUNT(*) FROM emp)
PRINT 'Employee Count: '+@count
SELECT @count

但是,如果我想对 use if dynamic SQL 做同样的事情,我就得不到我想要的结果。我的动态SQL代码如下:

DECLARE @count varchar(10)
DECLARE @sqlQuery varchar(500)
SET @sqlQuery = 'SET '+@count +'= (SELECT COUNT(*) FROM emp)'
EXEC (@sqlQuery)
PRINT 'Employee Count: '+@count
SELECT @count

这段代码给我一个 NULL 作为输出。

应该做什么?我哪里出错了?

sql sql-server tsql dynamic-sql
1个回答
5
投票

尝试为-

添加输出参数
DECLARE 
      @SQL NVARCHAR(500)
    , @OutputNum VARCHAR(10)

SET @SQL = N'SELECT @OUT = COUNT(1) FROM dbo.emp'

EXEC sys.sp_executesql
        @SQL
    , N'@OUT INT OUTPUT'
    , @OUT = @OutputNum OUTPUT

PRINT 'Employee Count: '+ @OutputNum
SELECT @OutputNum

输出-

Employee Count: 103
© www.soinside.com 2019 - 2024. All rights reserved.