There shouldn't be a difference between:
DECLARE
CURSOR my_curs IS SELECT employee_name FROM employees;
BEGIN
FOR my_rec IN my_curs LOOP
-- do stuff
END LOOP;
END;
And
BEGIN
FOR my_rec IN (SELECT employee_name FROM employees) LOOP
-- do stuff
END LOOP;
END;
Right? I'm getting different results, but then my query is quite a bit more complicated, so it may be my bug. Might even have a slight difference that I am missing. This is just a sanity check.