Как поместить результат запроса SQL в переменную (MSSQL)?

SET @sql = 'SELECT COUNT(*) as count  FROM '+@table_name
EXEC (@sql)

есть вот такой код, который считает количество строк в нужной мне таблице.

Как поместить это количество в переменную @cnt?

Чтобы я смог потом сделать if @cnt>0...


Ответы (1 шт):

Автор решения: Denis Rubashkin

Воспользуйтесь процедурой sp_executesql, которая позволяет передавать и возвращать параметры:

DECLARE @Cnt    INT
    , @sql  NVARCHAR(1000)
    , @table_name SYSNAME = 'TableName'

SET @sql = N'SELECT @Cnt = COUNT(*) FROM ' + QUOTENAME(@table_name)

EXEC sp_executesql @sql, N'@Cnt INT OUTPUT', @Cnt OUTPUT

SELECT @Cnt

sp_executesql

Вообще говоря, для if @cnt > 0 нет необходимости подсчитывать количество строк в таблицы. С точки зрения производительности лучше использовать запрос вида:

IF EXISTS ( SELECT 1 FROM TableName )...
→ Ссылка