Выполнение динамически созданного скрипта с возвращением параметра 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;