将计数设置为变量

Dor*_*icz 2 sql t-sql sql-server

我想将表的行数分配给一个变量。

DECLARE @ROW_COUNT nvarchar(1000);
SET @sql_row_count = 'SELECT COUNT(*) FROM ' + @TABLE_NAME;
EXEC sp_executesql @sql_row_count, @ROW_COUNT OUTPUT;

SET @ROW_COUNT = cast(@ROW_COUNT as int);
SELECT @ROW_COUNT;
Run Code Online (Sandbox Code Playgroud)

@ROW_COUNT 返回 null。

感谢您的帮助。

Squ*_*rel 10

对您现有查询的评论

  1. @ROW_COUNT应该是整数。CAST()如果您将其定义为整数,则不需要使用。
  2. 您需要分配@ROW_COUNTCOUNT(*).
  3. QUOTENAME()在 @TABLE_NAME 上使用以避免 sql 注入。
  4. 定义 的参数sp_executesql

修改查询如下


DECLARE @ROW_COUNT INT;
DECLARE @sql_row_count NVARCHAR(MAX)

SET @sql_row_count = 'SELECT @ROW_COUNT = COUNT(*) FROM ' + QUOTENAME(@TABLE_NAME);

-- print out for verification
PRINT @sql_row_count 
EXEC sp_executesql @sql_row_count, N'@ROW_COUNT INT OUTPUT', @ROW_COUNT OUTPUT;

-- SET @ROW_COUNT = cast(@ROW_COUNT as int);
SELECT @ROW_COUNT;
Run Code Online (Sandbox Code Playgroud)