Funzione Oracle Sequence Nextval

Funzione Oracle Sequence Nextval



In Oracle, una sequenza fa riferimento a un oggetto di database che genera una serie di valori numerici in base a un incremento specificato. Le sequenze vengono comunemente utilizzate per generare i valori di chiave primaria univoci per i record in una tabella di database.

In questo tutorial impareremo come utilizzare la funzione NEXTVAL quando si lavora con le sequenze Oracle.

NOTA: questo tutorial non tratta le basi della creazione di una sequenza Oracle. Consulta il nostro tutorial sulle sequenze Oracle per saperne di più.







Funzione Oracle Nextval

La funzione nextval in una sequenza Oracle viene utilizzata per recuperare il valore successivo in una data sequenza.



Possiamo esprimere la sintassi della funzione come mostrato nel seguente frammento di codice:



nome_sequenza.nextval

La funzione non accetta alcun argomento o parametro. Quindi restituisce il valore successivo nella sequenza definita.





Esempio Dimostrazione della funzione

Prendiamo in considerazione un esempio. Iniziamo definendo una semplice sequenza Oracle come mostrato nel codice seguente:

CREATE SEQUENCE prova_sequenza
INIZIARE CON 1
INCREMENTO DI 1 ;

Usiamo l'istruzione CREATE SEQUENCE per inizializzare una nuova sequenza Oracle. Definiamo quindi a quale valore inizia la sequenza e il valore di incremento per ogni nuovo valore generato.



Nel nostro esempio, test_sequence parte dal valore 1 e aumenta di uno per ogni nuovo valore. Questo dovrebbe generare una serie di valori numerici a partire da 1,2,3,4,5...ecc.

Utilizzo della funzione Oracle Nextval

Possiamo utilizzare la funzione next value dalla sequenza test_sequence per ottenere il valore successivo, come mostrato di seguito:

Selezionare test_sequence.nextval da dual;

Questo dovrebbe restituire il valore successivo dalla sequenza come mostrato di seguito:

Se chiami di nuovo l'istruzione, dovrebbe restituire il valore successivo nella serie che è 2.

Questo continua fino a quando i valori non sono esauriti o si raggiunge il valore massimo definito nella sequenza. Controlla il nostro tutorial sulla sequenza Oracle per imparare come impostare i valori minimo e massimo.

Utilizzo della funzione Nextval per eseguire il loop over dei valori

Possiamo anche usare la funzione nextval per stampare i numeri da 1 a 10 come mostrato nel seguente codice:

CREATE SEQUENCE looper_sequence
INIZIARE CON 1
INCREMENTO DI 1 ;

impostare SERVEROUTPUT attivo;
INIZIO
PER io IN 1 .. 10
CICLO CONTINUO
DBMS_OUTPUT.PUT_LINE ( looper_sequence.nextval ) ;
CICLO FINE;
FINE;

Il codice fornito crea una nuova sequenza chiamata looper_sequence che inizia da 1 e aumenta di 1 per ogni nuovo valore generato.

Abilitiamo quindi l'opzione SERVEROUTPUT che consente al pacchetto DBMS_OUTPUT di visualizzare i messaggi nella console SQL*Plus.

Infine, racchiudiamo un ciclo for all'interno di un'istruzione end/begin per iterare nell'intervallo di valori da 1 a 10. Quindi chiamiamo la funzione DBMS_OUTPUT.PUT_LINE per ogni valore nell'intervallo e stampiamo il valore successivo nella sequenza looper_sequence al consolare.

Il codice stampa i successivi dieci valori nella sequenza del looper. Nel nostro caso sarà il valore da 1 a 10 o 11 – 20… e così via per ogni nuova chiamata.

Uscita risultante :

1
2
3
4
5
6
7
8
9
10


PL / Procedura SQL completata con successo.

Utilizzo della funzione Nextval in un'istruzione Insert

Possiamo anche usare la funzione nextval in un'istruzione insert come chiave primaria. Per esempio:

inserire utenti ( id ,nome,carta_di_credito,paese )
i valori ( test_sequence.nextval, 'James Smith' , '4278793631436711' , 'Emirati Arabi Uniti' ) ;

Nell'esempio dato, chiamiamo la funzione nextval da test_sequence per inserire il valore per la colonna id nella tabella.

Conclusione

In questo post, hai scoperto come utilizzare la funzione nextval di Oracle per recuperare il valore successivo in una sequenza. Hai anche imparato come utilizzare la funzione per eseguire iterazioni su un insieme di valori o per inserire un valore univoco in una colonna della tabella.