Eu diria que você deveria usar
SCOPE_IDENTITY() como @@identity retornará a identidade da última coisa inserida (que pode não ser seu procedimento armazenado se várias consultas estiverem sendo executadas simultaneamente). Você também precisa SELECIONAR, não DEVOLVER.
ExecuteScalar retornará o valor da primeira coluna da primeira linha de um conjunto de resultados. Então...
SELECT SCOPE_IDENTITY();
é provavelmente mais o que você quer.