If a Procedure calls another procedure INSIDE it's code, any #temp tables are available to it that exist in the procedure;
if the procedures are called consecutively, then the temp table has to exist prior to the first procs call, or if the proc will create the table, then only a global temp table(##Temp) will be available in that scope.
so if the proc is called inside
CREATE PROCEDURE Example
AS
BEGIN
-- Create the temp table
CREATE TABLE #temp (tempid int, temptext varchar(30))
--populate it
INSERT INTO #temp
SELECT * FROM [SomeAnonymousTable)
--call a child procedure that might do something witht eh temp table
EXECUTE ExampleProcTwo
END --PROC
GO
EXECUTE Example
CREATE PROCEDURE Example
AS
BEGIN
-- Create the global temp table
CREATE TABLE ##temp (tempid int, temptext varchar(30))
--populate it
INSERT INTO ##temp
SELECT * FROM [SomeAnonymousTable)
END --PROC
GO
EXECUTE Example
EXECUTE ExampleProcTwo
Lowell