Выполнение динамически созданного скрипта с возвращением параметра SP_EXECUTESQL - MSSQL

Пример возвращения параметра при выполнении динамически созданного запроса.

Может пригодиться в случаях когда необходимо динамически созданным скриптом вернуть параметры для дальнейшей обработки в скрипте, например процедуры.


Будем использовать для этого sp_executesql

DECLARE @eventCount as int = 0; -- Наш возвращаемый параметр
DECLARE @sqlString AS NVARCHAR(500); -- Динамически сгенерированный SQL скрипт
DECLARE @parmDefinition AS NVARCHAR(500); -- Набор параметров для обмена

DECLARE @actualDate as date = '2000-08-24';
DECLARE @tableName as varchar(max) = 'sys.tables';

SET @parmDefinition = N'@outputCount int OUTPUT,@DateSend date';
SET @sqlString = N'select @outputCount = count(1) from '+@tableName+' where create_date>@dateSend;';

EXEC sp_executesql
    @stmt = @sqlString, -- Динамически созданный запрос
    @params = @parmDefinition, -- Описание передаваемых параметров (как в запрос так и обратно)
    @dateSend = @actualDate, -- Принимаемый параметр
    @outputCount = @eventCount OUTPUT; -- Возвращаемый параметр

SELECT @eventCount AS CountEvents;


Подробнее