Podrías al final del procedimiento SQL seleccionar el id...
p.e.
Select id_campo as retorno.
Y ejecutas tu procedimiento desde .NET con..ExecuteScalar() que devuelve la primer columna del primer registro de un result set...
p.e
try
{
conn.Open();
int id_campo = Convert.ToInt32(cmd.ExecuteScalar());
}
catch(Exception ex)
{
throw new Exception ("Error al obtener id ", ex);
}