Можно ли запускать динамические сценарии SQL, которые включают объявление переменных?
Пример:
Важное примечание : этот пример только для демонстрации механизма, который мне нужно реализовать. Показанный расчет тривиален для простоты.
Мне нужно вернуть минимальное значение между 4 переданными значениями, поэтому программно я создаю строку, содержащую следующий код:
DECLARE @_1 INT = 12 ;
DECLARE @_2 INT = 22 ;
DECLARE @_3 INT = 32 ;
DECLARE @_4 INT = 42 ;
DECLARE @_Min = NULL ;
SET @_Min = @_1 ;
IF (@_2 < @_Min) SET @_Min = @_2 ;
IF (@_3 < @_Min) SET @_Min = @_3 ;
IF (@_4 < @_Min) SET @_Min = @_4 ;
SELECT @_Min ;
Опять же, все это содержится в строковой переменной (скажем, @_Command
).
Чтобы выполнить это и получить результат расчета, я бы запустил следующую команду:
EXECUTE sp_executesql @_l_Command ,
N'@_l_Result FLOAT OUTPUT' ,
@_l_Result = @_l_Result OUTPUT ;
При запуске я получаю сообщение об ошибке:
Сообщение 156, Уровень 15, Состояние 1, Строка 1
Неверный синтаксис рядом с ключевым словом «DECLARE».
Очевидно, что я делаю что-то синтаксически неправильно, но не могу понять, что это может быть.