How the Database Server Implements Scroll Cursors
Because it cannot anticipate which row the program will ask for next, the database server must retain all the rows in the active set until the scroll cursor closes. When a scroll cursor opens, the database server implements the active set as a temporary table, although it might not populate this table immediately.
The first time a row is fetched, the database server copies it into the temporary table as well as returning it to the program.
When a row is fetched for the second time, it can be taken from the temporary table. This scheme uses the fewest resources, in case the program abandons the query before it fetches all the rows. Rows that are never fetched are usually not copied from the database, or are saved in a temporary table.