I'm confused, why do you need to deal with the result sets?
Why not just build your insert/delete statements with the same WHERE clause that you use to show the data? Unless your going to allow your user to select items that can be archived from the result set?
If you are just archiving everything that your select returns then just use it to do the other work.
SELECT *
FROM my_table
WHERE date_id < '1/1/03';
INSERT INTO my_archive
SELECT *
FROM my_table
WHERE date_id < '1/1/03';
DELETE FROM my_table
WHERE date_id < '1/1/03';
Those 3 statements would work to show all items that will be archived, insert those items into the archive table, and remove them from the original table. No messing with the result sets needed.