Я бы сказал, что вы должны использовать SCOPE_IDENTITY()
, так как @@identity
вернет идентификатор последней вставленной вещи (которая может не быть вашей хранимой процедурой, если несколько запросов выполняются одновременно).
Вытакже необходимо выбрать его, а не возвращать.
ExecuteScalar
вернет значение первого столбца из первой строки набора результатов.
Итак ...
SELECT SCOPE_IDENTITY();
, вероятно, больше, чем вы хотите.