return scope_identity() question
All procedures have an integer return value.  Your method would work, there is no hard and fast rule against it.

Alternatively, you could return an output parameter.

Example:


create procedure YourProcedure
  @ID output
as
  insert into YourTable (bunch of values)
  select @ID = scope_identity()
go


You then call your procedure as follows:


declare @TheID int
exec YourProcedure @TheID output
select @TheID