Передайте scope_identity в хранимую процедуру

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

Однако непосредственная передача scope_identity в дочернюю процедуру приводит к ошибке синтаксического анализа в SQL Server Management Studio.

create procedure parent
as
begin
   --  insert a record
   exec child scope_identity() -- this does not work
end

Однако использование локальной переменной решает проблему.

create procedure parent
as
begin
   --  insert a record
   set @id = scope_identity()
   exec child @id -- this works
end

В чем причина отказа прямого прохождения scope_identity() в качестве входного параметра?

1 ответ

Решение

Вы не можете передать результат функции в качестве параметра хранимой процедуры. Вам нужно сделать последний метод, сохранив результат в переменной, а затем передав переменную.

Другие вопросы по тегам