En los casos de procedimientos anidados la solución es crear las tablas temporales en el procedimiento primario para que sean visibles dentro de los procedimientos secundarios, y además, si los procedimientos secundarios pueden ser llamados en forma independiente, deben tener el código que valide las tablas temporales para crearlas si no existen, por ejemplo:
Código:
create procedure p1 as
create table #t1 (id numeric(8))
begin tran
insert into #t1 values (1)
exec p2
commit tran
create procedure p2 as
if not exists (select name from tempdb..sysobjects where name = "#t1")
begin
create table #t1 (id numeric(8))
end
select * from #t1
Saludos