Бих казал, че трябва да използвате SCOPE_IDENTITY() като @@identity ще върне самоличността на последното вмъкнато нещо (което може да не е вашата съхранена процедура, ако множество заявки се изпълняват едновременно).
Трябва също да го ИЗБЕРЕТЕ, а не да го ВЪРНЕТЕ.
ExecuteScalar ще върне стойността на първата колона от първия ред на набор от резултати.
И така...
SELECT SCOPE_IDENTITY();
вероятно е повече от това, което искате.