Un cursore esegue effettivamente un SELECT e quindi consente di scorrere il set di risultati, che viene mantenuto in un'istantanea dello stato del DB. Poiché il tuo set di risultati è già stato recuperato, non sarà influenzato dall'istruzione UPDATE. (La gestione delle cose altrimenti richiederebbe di rieseguire la query ogni volta che fai avanzare il cursore!)
Vedi:
http://www.techonthenet.com/oracle/cursors/declare.php