Tässä opetusohjelmassa opimme käyttämään NEXTVAL-funktiota, kun työskentelet Oracle-sekvenssien kanssa.
HUOMAUTUS: Tämä opetusohjelma ei kata Oracle-sekvenssin luomisen perusteita. Katso lisää Oracle-sekvenssejä käsittelevästä opetusohjelmastamme.
Oracle Nextval -funktio
Oracle-sekvenssin nextval-funktiota käytetään seuraavan arvon hakemiseen tietyssä sekvenssissä.
Voimme ilmaista funktion syntaksin seuraavan koodinpätkän mukaisesti:
sekvenssin_nimi.seuraava
Funktio ei hyväksy argumentteja tai parametreja. Sitten se palauttaa määritetyn sekvenssin seuraavan arvon.
Esimerkki toiminnon esittelystä
Otetaan esimerkkiä. Aloitamme määrittelemällä yksinkertaisen Oracle-sekvenssin seuraavan koodin mukaisesti:
CREATE SEQUENCE test_sequenceALOITA 1
LISÄYS 1 ;
Käytämme CREATE SEQUENCE -käskyä uuden Oracle-sekvenssin alustamiseen. Määritämme sitten, mistä arvosta sekvenssi alkaa, ja lisäysarvon jokaiselle uudelle luodulle arvolle.
Esimerkissämme test_sequence alkaa arvosta 1 ja kasvaa yhdellä jokaisen uuden arvon kohdalla. Tämän pitäisi tuottaa sarja numeerisia arvoja alkaen 1,2,3,4,5… jne.
Oracle Nextval -funktion käyttäminen
Voimme käyttää test_sequence-sekvenssin seuraavan arvon funktiota seuraavan arvon saamiseksi, kuten seuraavassa esitetään:
valitse test_sequence.nextval osoitteesta dual;Tämän pitäisi palauttaa sekvenssin seuraava arvo seuraavassa esitetyllä tavalla:
Jos kutsut lausetta uudelleen, sen pitäisi palauttaa sarjan seuraava arvo, joka on 2.
Tämä jatkuu, kunnes arvot ovat kuluneet loppuun tai saavutat sarjassa määritetyn enimmäisarvon. Tutustu Oracle-sekvenssin opetusohjelmaan saadaksesi lisätietoja vähimmäis- ja enimmäisarvojen asettamisesta.
Nextval-funktion käyttö arvojen silmukoimiseen
Voimme myös käyttää nextval-toimintoa tulostamaan numerot 1-10 seuraavan koodin mukaisesti:
LUO SEQUENCE looper_sequenceALOITA 1
LISÄYS 1 ;
aseta SERVEROUTPUT päällä;
ALKAA
MINULLE SISÄÄN 1 .. 10
LOOP
DBMS_OUTPUT.PUT_LINE ( looper_sequence.nextval ) ;
END LOOP;
END;
Annettu koodi luo uuden sekvenssin nimeltä looper_sequence, joka alkaa luvusta 1 ja kasvaa 1:llä jokaista uutta luotua arvoa kohti.
Otamme sitten käyttöön SERVEROUTPUT-vaihtoehdon, jonka avulla DBMS_OUTPUT-paketti voi näyttää viestit SQL*Plus-konsolissa.
Lopuksi lisäämme end/begin-käskyn sisään for-silmukan toistamaan arvoaluetta 1-10. Kutsumme sitten DBMS_OUTPUT.PUT_LINE-funktiota jokaiselle alueen arvolle ja tulostamme seuraavan arvon looper_sequence-sekvenssissä konsoli.
Koodi tulostaa seuraavat kymmenen arvoa looper-sekvenssissä. Meidän tapauksessamme se on arvo 1-10 tai 11-20… ja niin edelleen jokaiselle uudelle puhelulle.
Tuloksena oleva tulos :
12
3
4
5
6
7
8
9
10
PL / SQL-menettely suoritettu onnistuneesti.
Nextval-funktion käyttäminen lisäyslausekkeessa
Voimme myös käyttää nextval-funktiota insert-käskyssä ensisijaisena avaimena. Esimerkiksi:
laittaa sisään käyttäjiä ( id ,etunimi,luottokortti,maa )arvot ( test_sequence.nextval, 'James Smith' , '4278793631436711' , 'Yhdistyneet Arabiemiirikunnat' ) ;
Annetussa esimerkissä kutsumme nextval-funktiota test_sequence-funktiosta lisätäksesi id-sarakkeen arvon taulukkoon.
Johtopäätös
Tässä viestissä huomasit, kuinka Oracle nextval -funktiota käytetään sarjan seuraavan arvon hakemiseen. Opit myös käyttämään funktiota arvojoukon iterointiin tai yksilöllisen arvon lisäämiseen taulukon sarakkeeseen.