I think more explanation is needed about what your script is demonstrating. Is your specific intent to demonstrate how to select from a "remote" stored procedure?
When I want to return a filtered or transformed result from a stored procedure, I will insert into a table variable or temp table like so. This seems cleaner, because it required no connection string.
create procedure dbo.proc_simple as
select top 5 object_id, name from sys.objects
declare @objects table ( obj_id int, obj_name varchar(180) );
insert into @objects ( obj_id, obj_name )
select * from @objects;
"The universe is complicated and for the most part beyond your control, but your life is only as complicated as you choose it to be."