Funció Nextval de la seqüència d'Oracle

Funcio Nextval De La Sequencia D Oracle



A Oracle, una seqüència fa referència a un objecte de base de dades que genera una sèrie de valors numèrics segons un increment especificat. Les seqüències s'utilitzen habitualment per generar els valors de clau primària únics per als registres d'una taula de base de dades.

En aquest tutorial, aprendrem a utilitzar la funció NEXTVAL quan es treballa amb seqüències d'Oracle.

NOTA: aquest tutorial no cobreix els conceptes bàsics de la creació d'una seqüència d'Oracle. Consulteu el nostre tutorial sobre seqüències d'Oracle per descobrir-ne més.







Funció Oracle Nextval

La funció nextval en una seqüència d'Oracle s'utilitza per obtenir el valor següent d'una seqüència determinada.



Podem expressar la sintaxi de la funció tal com es mostra al següent fragment de codi:



nom_seqüència.nextval

La funció no accepta cap argument ni paràmetre. A continuació, retorna el valor següent de la seqüència definida.





Exemple de demostració de funció

Prenem en consideració un exemple. Comencem definint una seqüència simple d'Oracle tal com es mostra al codi següent:

CREATE SEQUENCE prova_seqüència
COMENÇAR AMB 1
INCREMENT DE 1 ;

Utilitzem la instrucció CREATE SEQUENCE per inicialitzar una nova seqüència d'Oracle. A continuació, definim a quin valor comença la seqüència i el valor d'increment per a cada nou valor generat.



En el nostre exemple, la seqüència de prova comença amb el valor d'1 i s'incrementa en un a cada valor nou. Això hauria de generar una sèrie de valors numèrics a partir de 1,2,3,4,5...etc.

Ús de la funció Oracle Nextval

Podem utilitzar la funció de valor següent de la seqüència test_sequence per obtenir el valor següent, tal com es mostra a continuació:

seleccionar test_sequence.nextval de dual;

Això hauria de retornar el següent valor de la seqüència tal com es mostra a continuació:

Si torneu a cridar la instrucció, hauria de retornar el següent valor de la sèrie que és 2.

Això continua fins que s'esgoten els valors o s'arriba al valor màxim que es defineix a la seqüència. Consulteu el nostre tutorial de seqüències d'Oracle per saber com establir els valors mínims i màxims.

Ús de la funció Nextval per fer un bucle sobre valors

També podem utilitzar la funció nextval per imprimir els números de l'1 al 10 tal com es mostra al codi següent:

CREATE SEQUENCE looper_sequence
COMENÇAR AMB 1
INCREMENT DE 1 ;

conjunt SERVEROUTPUT activat;
COMENÇAR
PER I IN 1 .. 10
LOOP
DBMS_OUTPUT.PUT_LINE ( looper_sequence.nextval ) ;
BULE FINAL;
FINAL;

El codi proporcionat crea una nova seqüència anomenada looper_sequence que comença a 1 i s'incrementa en 1 per a cada nou valor generat.

A continuació, habilitem l'opció SERVEROUTPUT que permet que el paquet DBMS_OUTPUT mostri els missatges a la consola SQL*Plus.

Finalment, adjuntem un bucle for dins d'una instrucció end/begin per iterar sobre l'interval de valors de l'1 al 10. A continuació, cridem a la funció DBMS_OUTPUT.PUT_LINE per a cada valor de l'interval i imprimim el següent valor de la seqüència de looper_sequence al consola.

El codi imprimeix els deu valors següents a la seqüència del looper. En el nostre cas, serà el valor de l'1 al 10 o de l'11 al 20... i així successivament per a cada nova trucada.

Sortida resultant :

1
2
3
4
5
6
7
8
9
10


PL / El procediment SQL s'ha completat correctament.

Ús de la funció Nextval en una instrucció d'inserció

També podem utilitzar la funció nextval en una instrucció d'inserció com a clau primària. Per exemple:

inserir-hi usuaris ( id ,nom,targeta_de_crèdit,país )
valors ( test_sequence.nextval, 'James Smith' , '4278793631436711' , 'Emirats Àrabs Units' ) ;

A l'exemple donat, cridem a la funció nextval des de la seqüència de prova per inserir el valor de la columna id a la taula.

Conclusió

En aquesta publicació, heu descobert com utilitzar la funció Nextval d'Oracle per obtenir el següent valor en una seqüència. També heu après a utilitzar la funció per iterar sobre un conjunt de valors o inserir un valor únic en una columna de taula.