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
对您现有查询的评论
@ROW_COUNT应该是整数。CAST()如果您将其定义为整数,则不需要使用。@ROW_COUNT给COUNT(*).QUOTENAME()在 @TABLE_NAME 上使用以避免 sql 注入。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)