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.