Come tutti i principali linguaggi di programmazione, PL/SQL supporta cicli che consentono di ripetere un insieme di istruzioni finché non viene soddisfatta una determinata condizione.
In questo tutorial, esploreremo l'uso dell'istruzione LOOP in PL/SQL per eseguire ripetutamente un blocco di codice.
Loop Oracle
Il linguaggio PL/SQL supporta i vari costrutti di loop come i loop 'for' e 'while'. Possiamo esprimere la sintassi di un ciclo generico in Oracle come mostrato di seguito:
<< etichetta >> CICLO CONTINUO
loop_statement;
END LOOP loop_label;
Questo contiene la parola chiave LOOP e il corpo del ciclo da eseguire ed è racchiuso dalla parola chiave END LOOP.
Il blocco LOOP esegue le azioni definite e restituisce il controllo alla clausola del ciclo superiore dopo il completamento. Questo di solito è racchiuso in una clausola EXIT o EXIT WHEN per terminare il ciclo dopo che è stata soddisfatta una condizione specifica. Questo aiuta a prevenire i loop infiniti.
Sintassi Oracle For Loop:
Quanto segue mostra la sintassi di un ciclo 'for' in PL/SQL:
INIZIOFOR variabile_ciclo IN [limite_inferiore..limite_superiore] LOOP
-- codice da eseguire nel ciclo
CICLO FINE;
FINE;
La variabile_loop consente di definire un ciclo che viene utilizzato per controllare il ciclo e i limiti inferiore e superiore. I limiti superiore e inferiore specificano i valori dell'intervallo in cui si verifica la valutazione del ciclo.
Ciclo mentre Oracle
Possiamo anche definire i cicli 'while' in PL/SQL come dimostrato dalla seguente sintassi:
INIZIOWHILE condizione LOOP
-- azione ciclica
CICLO FINE;
FINE;
In un ciclo 'while', l'azione del ciclo viene eseguita ripetutamente mentre la condizione è vera.
Cursore Oracle per loop
Oracle supporta anche i cicli 'cursor for' che ci consentono di eseguire una serie di istruzioni per ogni riga in un determinato set di risultati. La sintassi può essere espressa come segue:
INIZIOFOR variabile_ciclo IN (SELECT colonna1, colonna2, ...
DA tabella1, tabella2, ...
Condizione WHERE) LOOP
-- azione ciclica
CICLO FINE;
FINE;
Esempi di cicli in Oracle
Gli esempi seguenti illustrano le nozioni di base sull'utilizzo di cicli di cursori for, while e for in Oracle.
Esempio di ciclo For Oracle:
Questo esempio mostra come utilizzare un ciclo 'for' per stampare i numeri da 1 a 10.
INIZIOPER i IN 1..10 CICLO
DBMS_OUTPUT.PUT_LINE(i);
CICLO FINE;
FINE;
Mentre Esempio di ciclo:
Possiamo eseguire un'azione simile utilizzando un ciclo while come mostrato di seguito:
INIZIODICHIARARE
i NUMERO := 1;
INIZIO
WHILE i <= 10 CICLO
DBMS_OUTPUT.PUT_LINE(i);
io := io + 1;
CICLO FINE;
FINE;
FINE;
Questo dovrebbe eseguire un'azione simile al ciclo 'for'.
Esempio di cursore per loop:
Quanto segue mostra come utilizzare il ciclo 'cursor for' per ottenere il nome completo di un cliente:
INIZIOFOR dipendente IN (SELECT nome, cognome
DA dipendenti) LOOP
DBMS_OUTPUT.PUT_LINE(dipendente.nome_nome || ' ' || dipendente.cognome);
CICLO FINE;
FINE;
Esempio di output:
Conclusione
In questo post, hai riscontrato tre tipi principali di loop nel linguaggio Oracle PL/SQL. Puoi controllare la documentazione per esplorare ulteriormente.