I denne tutorial lærer vi, hvordan du bruger NEXTVAL-funktionen, når du arbejder med Oracle-sekvenser.
BEMÆRK: Denne vejledning dækker ikke det grundlæggende i at skabe en Oracle-sekvens. Se vores selvstudie om Oracle-sekvenser for at finde ud af mere.
Oracle Nextval funktion
Nextval-funktionen i en Oracle-sekvens bruges til at hente den næste værdi i en given sekvens.
Vi kan udtrykke syntaksen for funktionen som vist i følgende kodestykke:
sekvensnavn.næsteval
Funktionen accepterer ikke noget argument eller parameter. Det returnerer derefter den næste værdi i den definerede rækkefølge.
Eksempel funktionsdemonstration
Lad os tage et eksempel i betragtning. Vi starter med at definere en simpel Oracle-sekvens som vist i følgende kode:
CREATE SEQUENCE test_sequenceSTART MED 1
FORØG MED 1 ;
Vi bruger CREATE SEQUENCE-sætningen til at initialisere en ny Oracle-sekvens. Vi definerer derefter, ved hvilken værdi sekvensen starter, og stigningsværdien for hver ny genereret værdi.
I vores eksempel starter test_sequence ved værdien 1 og stiger med én for hver ny værdi. Dette skulle generere en række numeriske værdier, der starter ved 1,2,3,4,5...osv.
Brug af Oracle Nextval-funktionen
Vi kan bruge den næste værdi-funktion fra test_sequence-sekvensen for at få den næste værdi, som vist i følgende:
Vælg test_sequence.nextval fra dual;Dette skulle returnere den næste værdi fra sekvensen som vist i følgende:
Hvis du kalder sætningen igen, skulle den returnere den næste værdi i serien, som er 2.
Dette fortsætter, indtil værdierne er opbrugt, eller du rammer den maksimale værdi, som er defineret i sekvensen. Se vores Oracle-sekvensvejledning for at lære, hvordan du indstiller minimums- og maksimumværdierne.
Brug af Nextval-funktionen til at sløjfe over værdier
Vi kan også bruge nextval-funktionen til at udskrive tallene fra 1 til 10 som vist i følgende kode:
CREATE SEQUENCE looper_sequenceSTART MED 1
FORØG MED 1 ;
sæt SERVEROUTPUT til;
BEGYNDE
FOR i IN 1 .. 10
LOOP
DBMS_OUTPUT.PUT_LINE ( looper_sequence.nextval ) ;
ENDSLØKKE;
ENDE;
Den medfølgende kode opretter en ny sekvens kaldet looper_sequence, der starter ved 1 og stiger med 1 for hver ny genereret værdi.
Vi aktiverer derefter indstillingen SERVEROUTPUT, som tillader DBMS_OUTPUT-pakken at vise meddelelserne i SQL*Plus-konsollen.
Til sidst omslutter vi en for-løkke i en end/begin-sætning for at iterere over værdiintervallet fra 1 til 10. Vi kalder derefter DBMS_OUTPUT.PUT_LINE-funktionen for hver værdi i området og udskriver den næste værdi i looper_sequence-sekvensen til konsol.
Koden udskriver de næste ti værdier i looper-sekvensen. I vores tilfælde vil det være værdien fra 1 til 10 eller 11 – 20... og så videre for hvert nyt opkald.
Resulterende output :
12
3
4
5
6
7
8
9
10
PL / SQL-proceduren er gennemført.
Brug af Nextval-funktionen i en indsæt-erklæring
Vi kan også bruge nextval-funktionen i en insert-sætning som en primær nøgle. For eksempel:
indsætte i brugere ( id ,fornavn,kreditkort,land )værdier ( test_sequence.nextval, 'James Smith' , '4278793631436711' , 'Forenede Arabiske Emirater' ) ;
I det givne eksempel kalder vi nextval-funktionen fra test_sequence for at indsætte værdien for id-kolonnen i tabellen.
Konklusion
I dette indlæg opdagede du, hvordan du bruger Oracle nextval-funktionen til at hente den næste værdi i en sekvens. Du lærte også, hvordan du bruger funktionen til at iterere over et sæt værdier eller til at indsætte en unik værdi i en tabelkolonne.