Řekl bych, že byste měli používat SCOPE_IDENTITY()
jako @@identity
vrátí identitu poslední vložené věci (což nemusí být vaše uložená procedura, pokud je spuštěno více dotazů současně).
Také jej musíte VYBRAT, nikoli VRÁTIT.
ExecuteScalar
vrátí hodnotu prvního sloupce z prvního řádku sady výsledků.
Takže...
SELECT SCOPE_IDENTITY();
je pravděpodobně více, co chcete.