Cursore Oracle per loop

Cursore Oracle per loop
Un ciclo cursore è un tipo di loop che consente di recuperare ed elaborare le righe da un cursore di database senza preoccuparsi di gestire manualmente il ciclo di esecuzione.

Un cursore per loop è un'estensione del ciclo for in pl/sql e consente di eseguire un blocco di codice per ogni riga in un set risultante. Questo è molto utile in quanto consente di eseguire calcoli estesi in modo rapido ed efficiente in un singolo calcolo senza caricare i dati nella memoria.

Cursore Oracle per loop

Il ciclo for prende una riga dal set risultante nell'indice Loop per ogni iterazione. Se non c'è una riga, il ciclo per chiude il cursore.

Di seguito mostra la sintassi di base del cursore per loop in Oracle:

Per record in cursore_name
CICLO CONTINUO
-- Applica questo blocco su ogni riga
End Loop;

Nella sintassi fornita, il record rappresenta il nome variabile che prepresents ogni riga nel cursore.

Il cursore_name nel ciclo specifica un cursore esplicito che desideri passare. Si noti che un cursore deve essere aperto e recuperato nel record prima di usarlo in un cursore per loop.

Se non si desidera creare un cursore esplicito, il Loop crea implicitamente un indice Loop come variabile record di %di rowtype quando salti il ​​cursore_.

Cursore Oracle per esempio di loop

Diamo un'occhiata ad alcuni esempi di base del cursore per loop nei database Oracle.

dichiarare
Il cursore emp_cursor è
Seleziona First_name, last_name
dai dipendenti;
inizio
per dipendente in emp_cursor
ciclo continuo
Dbms_output.Put_line (dipendente.first_name || "|| dipendente.cognome);
End Loop;
FINE;

Nel codice fornito, dichiariamo un cursore di nome EMP_Cursor. Quindi popoliamo questo cursore con i dati dalla tabella dei dipendenti utilizzando le colonne First_Name e Last_Name.

Successivamente, utilizziamo un cursore per loop per recuperare ed elaborare i dati in ogni riga dal set di risultati. Si noti che la variabile del dipendente memorizza ogni riga nel EMP_Cursor.

Il loop concatena le colonne First_Name e Last_Name e stampa il risultato utilizzando DBMS_Output.Funzione put_line.

Il motore del database chiude automaticamente il cursore una volta terminato il ciclo.

Ciò dovrebbe restituire i seguenti risultati, dimostrando come possiamo utilizzare una definizione esplicita del cursore per elaborare i dati da una tabella:

Cursore implicito Oracle

Se non si desidera creare un cursore esplicito, puoi consentire al motore del database di crearne uno e gestirlo per te omettendo il nome del cursore come mostrato nel seguente:

INIZIO
Per il dipendente in (seleziona first_name, last_name
Dai dipendenti) Loop
Dbms_output.Put_line (dipendente.first_name || "|| dipendente.cognome);
End Loop;
FINE;

Ciò dovrebbe restituire un risultato simile a un cursore esplicito.

Conclusione

In questo post, ti sei imbattuto nel cursore per loop nei database Oracle per recuperare ed elaborare ogni riga da un set di risultati.