Выполнение динамического SQL, содержащего вызов хранимой процедуры - PullRequest
0 голосов
/ 11 октября 2019

Я делаю таблицу, которая содержит «стек» запросов для запуска в виде строк. Строки являются хранимыми процедурами с параметрами, но всякий раз, когда я их выполняю, я получаю сообщение об ошибке, в котором говорится, что не удается найти хранимую процедуру.

Например, у меня есть хранимая процедура с именем InterfaceQuery, которая принимает один параметр int, и этоработает нормально:

exec InterfaceQuery @Facility_fk = 1044

но когда я помещаю его в строку и выполняю строку следующим образом:

DECLARE @sqlCommand nvarchar(1000) = 'InterfaceQuery @Facility_fk = 1044'
exec @sqlCommand

я получаю сообщение об ошибке

Можетне найти хранимую процедуру 'InterfaceQuery @Facility_fk = 1044'

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

Кто-нибудь видит, что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 11 октября 2019

@ Дейл Баррель, скобки были то, что мне не хватало, exec(@sqlCommand) работает

0 голосов
/ 11 октября 2019

Вы можете использовать sp_executesql вместо exec, как показано ниже.

DECLARE @paramDef nvarchar(500)
DECLARE @paramVal int

set @paramDef = N'@Facility_fk int'
set @paramVal = 1044

exec sp_executesql N'dbo.InterfaceQuery @Facility_fk', @paramDef, @Facility_fk=@paramVal
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...