Как говорит Йоаким, SCOPE_IDENTITY()
не вернет личность после второй процедуры.Из документов MSDN на SCOPE_IDENTITY ()
Область действия - это модуль: хранимая процедура, триггер, функция или пакет.Поэтому два оператора находятся в одной и той же области видимости, если они находятся в одной и той же хранимой процедуре, функции или пакете.
@@Identity
ведет себя так, как вам нужно, но имеет основной недостаток, который он поднимаетпоследний идентификатор в текущем соединении , включая триггеры .Даже если вы на 100% уверены, что на соответствующие таблицы не действуют триггеры, любой, кто добавит триггер позже, сломает это, введя сложную задачу поиска ошибки с учетом простоты использования выходного параметра, я бы действительно советовал@@Identity
.