I do not think you can do this exactly as you would like. You may need to resort to either a UDF which returns a table, using table variables within the stored procedure, or using temporary tables. Functions are the most flexiable and temporary tables are the slowest. You can also use table variables as output parameters of the stored procedures. Below is an example of using table variables.
DECLARE @Result1 table (key1 int, foo varchar(32) )
insert into @Result1 select 1, 'This is Table 1'
DECLARE @Result2 table ( key2 int, foo varchar(32) )
insert into @Result2 select 1, 'This is Table 2'
select * from @Result1 inner join @Result2 on( key1 = key2 )