I denne opplæringen lærer vi hvordan du bruker NEXTVAL-funksjonen når du arbeider med Oracle-sekvenser.
MERK: Denne opplæringen dekker ikke det grunnleggende om å lage en Oracle-sekvens. Se veiledningen vår om Oracle-sekvenser for å finne ut mer.
Oracle Nextval-funksjon
Nextval-funksjonen i en Oracle-sekvens brukes til å hente neste verdi i en gitt sekvens.
Vi kan uttrykke syntaksen til funksjonen som vist i følgende kodebit:
sekvensnavn.nesteval
Funksjonen godtar ingen argument eller parameter. Den returnerer deretter neste verdi i den definerte sekvensen.
Eksempel på funksjonsdemonstrasjon
La oss ta i betraktning et eksempel. Vi starter med å definere en enkel Oracle-sekvens som vist i følgende kode:
CREATE SEQUENCE test_sequenceSTARTE MED 1
ØK MED 1 ;
Vi bruker CREATE SEQUENCE-setningen for å initialisere en ny Oracle-sekvens. Vi definerer deretter ved hvilken verdi sekvensen starter og økningsverdien for hver ny generert verdi.
I vårt eksempel starter test_sequence med verdien 1 og øker med én for hver ny verdi. Dette bør generere en serie med numeriske verdier som starter på 1,2,3,4,5...osv.
Bruke Oracle Nextval-funksjonen
Vi kan bruke neste verdi-funksjonen fra test_sequence-sekvensen for å få neste verdi, som vist i følgende:
plukke ut test_sequence.nextval fra dual;Dette skal returnere neste verdi fra sekvensen som vist i følgende:
Hvis du kaller setningen igjen, skal den returnere neste verdi i serien som er 2.
Dette fortsetter til verdiene er oppbrukt, eller du treffer den maksimale verdien som er definert i sekvensen. Sjekk vår Oracle-sekvensveiledning for å lære hvordan du angir minimums- og maksimumsverdier.
Bruke Nextval-funksjonen til å gå over verdier
Vi kan også bruke nextval-funksjonen til å skrive ut tallene fra 1 til 10 som vist i følgende kode:
CREATE SEQUENCE looper_sequenceSTARTE MED 1
ØK MED 1 ;
sett SERVEROUTPUT på;
BEGYNNE
FOR i IN 1 .. 10
LØKKE
DBMS_OUTPUT.PUT_LINE ( looper_sequence.nextval ) ;
END LOOP;
SLUTT;
Den oppgitte koden oppretter en ny sekvens kalt looper_sequence som starter på 1 og øker med 1 for hver ny genererte verdi.
Vi aktiverer deretter SERVEROUTPUT-alternativet som lar DBMS_OUTPUT-pakken vise meldingene i SQL*Plus-konsollen.
Til slutt legger vi en for-løkke i en end/begin-setning for å iterere over verdiområdet fra 1 til 10. Vi kaller deretter funksjonen DBMS_OUTPUT.PUT_LINE for hver verdi i området og skriver ut neste verdi i looper_sequence-sekvensen til konsoll.
Koden skriver ut de neste ti verdiene i looper-sekvensen. I vårt tilfelle vil det være verdien fra 1 til 10 eller 11 – 20 ... og så videre for hver nye samtale.
Resulterende utgang :
12
3
4
5
6
7
8
9
10
PL / SQL-prosedyre fullført.
Bruke Nextval-funksjonen i en Insert Statement
Vi kan også bruke nextval-funksjonen i en insert-setning som en primærnøkkel. For eksempel:
sette inn i brukere ( id ,fornavn,kredittkort,land )verdier ( test_sequence.nextval, 'James Smith' , '4278793631436711' , 'De forente arabiske emirater' ) ;
I det gitte eksemplet kaller vi nextval-funksjonen fra test_sequence for å sette inn verdien for id-kolonnen i tabellen.
Konklusjon
I dette innlegget oppdaget du hvordan du bruker Oracle nextval-funksjonen for å hente neste verdi i en sekvens. Du lærte også hvordan du bruker funksjonen til å iterere over et sett med verdier eller til å sette inn en unik verdi i en tabellkolonne.