3

这是我到目前为止所拥有的。我想将查询结果存储到一个 int 变量中,但到目前为止我得到了 null。执行后,@query 和 @countrow 都为空。任何建议都会很棒。

    SET @query = N'select @countrow=count(*) from ' + @tablename 
EXECUTE sp_executesql @query
4

2 回答 2

3
DECLARE @i INT, @sql NVARCHAR(512), @tablename varchar(200) = 'tbl'

SET @sql = N'SELECT @i = COUNT(*) FROM '  + @tablename

EXEC sp_executesql 
    @query = @sql, 
    @params = N'@i INT OUTPUT', 
    @i = @i OUTPUT 

PRINT @i 

看看SQL Fiddle

于 2012-10-10T14:16:51.583 回答
2

您需要使用OUTPUT关键字,类似于:

declare @query nvarchar(max)
declare  @countrow int
declare  @tablename varchar(50)

SET @query = N'select @cnt=count(*) from ' + @tablename 
EXECUTE sp_executesql @query, N'@cnt int OUTPUT', @cnt=@countrow OUTPUT

select @countrow as countrow -- to get the result
于 2012-10-10T14:16:27.270 回答