Dúvida em procedure

Boa noite.

Tenho a seguinte procedure:

cerate procedure procedure_1 @old int, @new int
as
begin
set @new = (select @@IDENTITY)
insert into troca values(@old, @new)
end

No meu programa em java, eu a executo quando faço uma troca de carros. A variável @old seria o carro antigo que foi trocado pelo novo(@new). Essa troca ocorre quando eu insiro um novo carro.

Meu problema é: Essa procedure está retornando o @@identity como null.

Alguém pode me ajudar?

Grato.