PL/SQL Cursor FOR LOOP (Italiano)
Sommario: in questo tutorial, imparerai come usare l’istruzione PL/SQL cursor FOR LOOP
per recuperare ed elaborare ogni record da un cursore.
Introduzione all’istruzione PL/SQL cursor FOR LOOP
L’istruzione cursorFOR LOOP
è un’elegante estensione dell’istruzione numericFOR LOOP
.
Il numericoFOR LOOP
esegue il corpo di un ciclo una volta per ogni valore intero in un intervallo specificato., Allo stesso modo, il cursore FOR LOOP
esegue il corpo del ciclo una volta per ogni riga restituita dalla query associata al cursore.
Una bella caratteristica del cursoreFOR LOOP
istruzione è che permette di recuperare ogni riga da un cursore senza gestire manualmente il ciclo di esecuzione cioè, OPEN
, FETCH
, e CLOSE
.
Il cursoreFOR LOOP
crea implicitamente il suo indice di loop come variabile record con il tipo di riga in cui il cursore ritorna e quindi apre il cursore.,
In ogni iterazione del ciclo, l’istruzione cursorFOR LOOP
recupera una riga dal set di risultati nel suo indice di ciclo. Se non c’è alcuna riga da recuperare, il cursore FOR LOOP
chiude il cursore.
Il cursore viene chiuso anche se un’istruzione all’interno del ciclo trasferisce il controllo all’esterno del ciclo, ad esempio EXIT
e GOTO
, o genera un’eccezione.,
di seguito viene illustrata La sintassi del cursore FOR LOOP
dichiarazione:
1) record
record
è il nome dell’indice che il cursore FOR LOOP
dichiarazione, dichiara implicitamente come un %ROWTYPE
variabile di record del tipo di cursore.
La variabile record
è locale al cursore FOR LOOP
istruzione. Significa che puoi fare riferimento solo all’interno del ciclo, non all’esterno., Al termine dell’esecuzione dell’istruzione
del cursoreFOR LOOP
, la variabilerecord
diventa indefinita.
2) cursor_name
cursor_name
è il nome di un cursore esplicito che non viene aperto all’avvio del ciclo.
Si noti che oltre al nome del cursore, è possibile utilizzare un’istruzioneSELECT
come mostrato di seguito:
In questo caso, il cursoreFOR LOOP
dichiara, apre, recupera e chiude un cursore implicito., Tuttavia, il cursore implicito è interno; pertanto, non è possibile fare riferimento ad esso.
Si noti che Oracle Database ottimizza automaticamente un cursoreFOR LOOP
per funzionare in modo simile a una queryBULK COLLECT
. Sebbene il codice appaia come se recuperasse una riga alla volta, Oracle Database recupera più righe alla volta e consente di elaborare ciascuna riga individualmente.
PL/SQL cursor FOR LOOP examples
Diamo un’occhiata ad alcuni esempi di utilizzo del cursoreFOR LOOP
per vedere come funziona.,
A) PL/SQL cursor FOR LOOP example
Il seguente esempio dichiara un cursore esplicito e lo utilizza nell’istruzione cursorFOR LOOP
.
In questo esempio, l’istruzioneSELECT
del cursore recupera i dati dalla tabellaproducts
. L’istruzioneFOR LOOP
ha aperto, recuperato ogni riga nel set di risultati, visualizzato le informazioni sul prodotto e chiuso il cursore.,
B) Cursore PER LOOP con un’istruzione SELECT esempio
Il seguente esempio è equivalente all’esempio precedente ma utilizza una query in un’istruzione cursorFOR LOOP
.
In questo tutorial, hai imparato come usare il cursore PL/SQL FOR LOOP
per recuperare i dati da un cursore.
- Questo tutorial è stato utile?
- Sì