Ř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.