2013-05-16 5 views
0

Я использую EXECUTE SP_EXECUTESQL для вызова хранимой процедуры из другой хранимой процедуры, но я получаю сообщение об ошибке. Я раньше не пробовал, поэтому не знаю, что не так.Вызов SP из другого SP через EXECUTE SP_EXECUTESQL

Здесь SPGetServiceState является SP и @Id(IN), @Return_State(OUT), @Return_Execute_Date(OUT) являются параметрами, необходимыми для прохождения, и @Request_Id имеет идентификатор, который необходимо передать.

EXECUTE SP_EXECUTESQL N'SPGetServiceState', N'@Id int, 
    @Return_State tinyint, @Return_Execute_Date smalldatetime', 
    @Id = @Request_Id, @Return_State = 0, @Return_Execute_Date = NULL 
+1

Почему вы используете 'sp_executesql'? –

+0

@MikaelEriksson: На самом деле я читал на болге, что EXECUTE SP_EXECUTESQL более эффективен, чем exec. Я думал, что лучше попробовать. – Dhwani

+0

Интересно, есть ли у вас ссылка на блог? –

ответ

1

Если вы не получили имя хранимой процедуры из переменной, нет необходимости в динамическом SQL. Вы можете просто:

exec dbo.SPGetServiceState(@Id, @Return_State output, @Return_Execute_Date output); 

Не забудьте output спецификатор. Без него параметр рассматривается как входной параметр.

+0

На самом деле я читал на болге, что EXECUTE SP_EXECUTESQL более эффективен, чем exec. Я думал, что лучше попробовать. – Dhwani

+0

@ITBeginner: 'sp_executesql' лучше, чем' exec' для динамического SQL. Но вам не нужен динамический SQL для вызова хранимой процедуры. – Andomar

+0

О, спасибо. Я действительно не знаю об этом. – Dhwani

Смежные вопросы