Передайте 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 ответ
Решение
Вы не можете передать результат функции в качестве параметра хранимой процедуры. Вам нужно сделать последний метод, сохранив результат в переменной, а затем передав переменную.