What i want to do is something along the lines of this.. one cursor (pld_cur) gets some records from a table. Then I want use some of the valaues from the records it retrieves and use them to get data for another cursor, from another table..

But what is happening is the returned cursor only has data as if it was only run for one record from pld_cur. What I want to do is open the second cursor (csr_return) to get data based on the values from the current row from pld_cur.. then go to the next row of pld_cur and add the new data it gets to csr_Return. So csr_Return has the records from every run of the loop.

Your OUT parameter gets a different value (i.e. pointer to a cursor) every iteration of the loop.
Only after finishing the loop, the out-parameter is returned to the calling procedure, hence only the last ref-cursor is reachable from there.

Ok, does this mean that I can no longer use a FOR LOOP here and use two separate cursors -- e.g. do i have to combine both SQL's into one (very tricky here) or is there a way i can do it still using two separate cursors? Thanks

Ok -- its quite complicated, thus the reason i decided to go about this using two cursors. When i have tried to combine the SQL before, the values from the dynamic_sql come up with incorrect figures unlike this way..

If you can make anything of that i'll be impressed... Ideally i like not to change that..
is there a way i could still do it using two cursors or similar, perhaps using a function.. in the end, i just need to return a cursor which contains the full results, or append the cursor somehow after each loop.. is this possible?

declare
cursor loop1 is
SELECT customer_id
, startdate
, enddate
from PLD_TABLE pld;
cursor loop2(cust_id in number,
st_date in date,
end_date in date) is
select col1,col2,col3
from my_table
where customer_id = cust_id
and the_date between st_date and end_date;
begin
for pnt in loop1 loop
for rec in loop2(pnt.customer_id,pnt,startdate,pnt.enddate) loop
.... what ever processing you want to do
end loop;
end loop;
end;

I know this is not what you asked for, but I don't think your query makes any sense. Let's say you have the following data (I added the breaks just to indicate where data logically breaks and repeats. I inserted the data by the autonomous block at the end of this post. The dates repeat. customer_id and value1 "increment"):

A quick visual count of weeks indicates there are a total of 18 different weeks in which there were visits, 9 per customer_id, but if you ignore counts from February of 07, then there are 7, 5 below that start date and 2 after. Your query, however, yeilds results that cannot possibly make sense.

By "walking" your way out of the inline views, you can easily see where the 44 comes from, it just doesn't make any sense. There are a few other things that don't seem to me to make sense. What is the functional reason for having an invoice date of 01-JAN-2007. You have two invoices in January of 2007. One would think that is what you want to see.