L'insieme di righe che verrà restituito da un cursore viene determinato nel punto in cui il cursore viene aperto (tramite un esplicito OPEN
o implicitamente dal ciclo FOR
). In questo caso, le righe che hai eliminato non verranno restituite nel tuo ciclo.
Generalmente, la query non viene eseguita tutto in una volta. Oracle esegue la query in modo sufficiente per recuperare il successivo gruppo di righe, restituisce quelle righe al PL/SQL VM e attende fino a quando la richiesta non viene a recuperare più righe. In 11g, Oracle eseguirà un numero implicito BULK COLLECT
di 100 righe alla volta, quindi ogni 100 iterazioni del ciclo la query verrà eseguita ulteriormente fino a quando non ci saranno più righe da restituire. A causa della consistenza della lettura in più versioni, Oracle restituirà sempre i dati all'utente al momento dell'apertura del cursore, anche se altre sessioni eseguono e eseguono modifiche mentre il codice è in esecuzione.
fonte
2013-03-01 15:42:22
Impressionante, solo il tipo di spiegazione che stavo cercando. Grazie! – DiscoInfiltrator