Jag skulle säga att du borde använda SCOPE_IDENTITY()
som @@identity
kommer att returnera identiteten för det senast infogade (vilket kanske inte är din lagrade procedur om flera frågor körs samtidigt).
Du måste också VÄLJA den, inte RETURNERA den.
ExecuteScalar
returnerar det första kolumnvärdet från den första raden i en resultatuppsättning.
Så...
SELECT SCOPE_IDENTITY();
är förmodligen mer vad du vill.