In questo tutorial, impareremo come utilizzare la funzione NextVal quando lavoriamo con Oracle Sequences.
Nota: questo tutorial non copre le basi della creazione di una sequenza Oracle. Fare riferimento al nostro tutorial su sequenze Oracle per scoprire di più.
Oracle NextVal Function
La funzione NextVal in una sequenza Oracle viene utilizzata per recuperare il valore successivo in una determinata sequenza.
Possiamo esprimere la sintassi della funzione come mostrato nel seguente frammento di codice:
sequence_name.Nextval
La funzione non accetta alcun argomento o parametro. Restituisce quindi il valore successivo nella sequenza definita.
Esempio di dimostrazione della funzione
Prendiamo in considerazione un esempio. Iniziamo definendo una semplice sequenza Oracle come mostrato nel seguente codice:
Crea sequenza test_sequence
Inizia con 1
Incremento di 1;
Utilizziamo l'istruzione Crea 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, il test_sequence inizia al valore di 1 e incrementi di uno su ogni nuovo valore. Ciò dovrebbe generare una serie di valori numerici a partire da 1,2,3,4,5 ... ecc.
Utilizzando la funzione Oracle NextVal
Possiamo utilizzare la funzione Valore successiva dalla sequenza test_sequence per ottenere il valore successivo, come mostrato nel seguente:
Seleziona test_sequence.Nextval da Dual;
Ciò dovrebbe restituire il valore successivo dalla sequenza come mostrato nella seguente:
Se si chiama 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 colpirà il valore massimo che è definito nella sequenza. Controlla il nostro tutorial sulla sequenza Oracle per imparare come impostare i valori minimi e massimi.
Utilizzando la funzione NextVal per loop su valori
Possiamo anche utilizzare la funzione NextVal per stampare i numeri da 1 a 10 come mostrato nel seguente codice:
Crea sequenza looper_sequence
Inizia con 1
Incremento di 1;
imposta ServerOutput su;
INIZIO
Per io in 1 ... 10
CICLO CONTINUO
Dbms_output.Put_line (looper_sequence.NextVal);
End Loop;
FINE;
Il codice fornito crea una nuova sequenza chiamata Looper_sequence che inizia a 1 e incrementi 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, alleggiamo un ciclo per un ciclo all'interno di un'istruzione fine/inizio per iterare l'intervallo di valori da 1 a 10. Chiamiamo quindi DBMS_OUTPUT.Funzione Put_line per ciascun valore nell'intervallo e stampare il valore successivo nella sequenza Looper_Equence sulla console.
Il codice stampa i successivi dieci valori nella sequenza looper. Nel nostro caso, sarà il valore da 1 a 10 o 11-20 ... e così via per ogni nuova chiamata.
Output risultante:
1
2
3
4
5
6
7
8
9
10
Procedura PL/SQL completata correttamente.
Utilizzando la funzione NextVal in un'istruzione Insert
Possiamo anche utilizzare la funzione NextVal in un'istruzione Insert come chiave primaria. Per esempio:
Insert In Users (ID, First_name, Credit_Card, Paese)
valori (test_sequence.Nextval, "James Smith", "4278793631436711", "Emirates Arabi Uniti");
Nell'esempio indicato, 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 Oracle NextVal per recuperare il valore successivo in una sequenza. Hai anche imparato come utilizzare la funzione per iterare su un insieme di valori o per inserire un valore univoco in una colonna tabella.