In the good old days when I spent my time cranking out PL/SQL, I spent lots of time creating cursors, since these are the best way for PL/SQL to interact with SQL. So, you define a cursor, open it and step through the rows that get returned, usually doing stuff with each row. End of story.
Fast forward to the present day and I am implementing search functionality in a stateless architecture. So you can't open a cursor and step through all of the rows. You have to come up with something like Google, where you get displayed results a page at a time. So, you can open a cursor and pull back a page of results, but when you want the next page obviously the cursor you had has gone. So you have to open a new one and move through it until you get to page 2.
This seems like something the world and his dog must have done, but I can't find much discussion of the topic and any techniques for doing it efficiently. Maybe I'm just not looking hard enough?