Powiedziałbym, że powinieneś używać SCOPE_IDENTITY()
jako @@identity
zwróci tożsamość ostatniej wstawionej rzeczy (która może nie być twoją procedurą składowaną, jeśli jednocześnie działa wiele zapytań).
Musisz go również WYBRAĆ, a nie ZWRÓCIĆ.
ExecuteScalar
zwróci wartość pierwszej kolumny z pierwszego wiersza zestawu wyników.
Więc...
SELECT SCOPE_IDENTITY();
jest prawdopodobnie bardziej tym, czego chcesz.