W tym samouczku nauczymy się, jak używać funkcji NEXTVAL podczas pracy z sekwencjami Oracle.
UWAGA: Ten samouczek nie obejmuje podstaw tworzenia sekwencji Oracle. Zapoznaj się z naszym samouczkiem dotyczącym sekwencji Oracle, aby dowiedzieć się więcej.
Funkcja Oracle Nextval
Funkcja nextval w sekwencji Oracle służy do pobierania następnej wartości w danej sekwencji.
Możemy wyrazić składnię funkcji, jak pokazano w poniższym fragmencie kodu:
nazwa_sekwencji.następna wartość
Funkcja nie przyjmuje żadnych argumentów ani parametrów. Następnie zwraca następną wartość w zdefiniowanej sekwencji.
Przykładowa demonstracja funkcji
Weźmy pod uwagę przykład. Zaczynamy od zdefiniowania prostej sekwencji Oracle, jak pokazano w poniższym kodzie:
UTWÓRZ SEKWENCJĘ sekwencja_testowaZACZĄĆ OD 1
PRZYROST O 1 ;
Używamy instrukcji CREATE SEQUENCE do zainicjowania nowej sekwencji Oracle. Następnie określamy, od jakiej wartości rozpoczyna się sekwencja oraz wartość przyrostu dla każdej nowo wygenerowanej wartości.
W naszym przykładzie test_sequence zaczyna się od wartości 1 i zwiększa się o jeden przy każdej nowej wartości. Powinno to wygenerować serię wartości liczbowych zaczynających się od 1,2,3,4,5…itp.
Korzystanie z funkcji Oracle Nextval
Możemy użyć funkcji następnej wartości z sekwencji test_sequence, aby uzyskać następną wartość, jak pokazano poniżej:
wybierać test_sequence.nextval z podwójnego;Powinno to zwrócić następną wartość z sekwencji, jak pokazano poniżej:
Jeśli ponownie wywołasz instrukcję, powinna ona zwrócić następną wartość w serii, czyli 2.
Trwa to do wyczerpania wartości lub osiągnięcia maksymalnej wartości zdefiniowanej w sekwencji. Sprawdź nasz samouczek sekwencji Oracle, aby dowiedzieć się, jak ustawić wartości minimalne i maksymalne.
Używanie funkcji Nextval do zapętlania wartości
Możemy również użyć funkcji nextval, aby wydrukować liczby od 1 do 10, jak pokazano w poniższym kodzie:
UTWÓRZ SEKWENCJĘ looper_sequenceZACZĄĆ OD 1
PRZYROST O 1 ;
ustawić WYJŚCIE SERWERA włączone;
ROZPOCZĄĆ
DLA I W 1 .. 10
PĘTLA
DBMS_OUTPUT.PUT_LINE ( looper_sequence.następna wartość ) ;
KONIEC PĘTLI;
KOŃCZYĆ SIĘ;
Dostarczony kod tworzy nową sekwencję o nazwie looper_sequence, która zaczyna się od 1 i zwiększa się o 1 dla każdej nowo wygenerowanej wartości.
Następnie włączamy opcję SERVEROUTPUT, która pozwala pakietowi DBMS_OUTPUT wyświetlać komunikaty w konsoli SQL*Plus.
Na koniec umieszczamy pętlę for wewnątrz instrukcji end/begin, aby iterować w zakresie wartości od 1 do 10. Następnie wywołujemy funkcję DBMS_OUTPUT.PUT_LINE dla każdej wartości w zakresie i drukujemy następną wartość w sekwencji looper_sequence do konsola.
Kod drukuje następne dziesięć wartości w sekwencji pętli. W naszym przypadku będzie to wartość od 1 do 10 lub 11 – 20… i tak dalej dla każdego nowego połączenia.
Wynikowy wynik :
12
3
4
5
6
7
8
9
10
PL / Procedura SQL została pomyślnie zakończona.
Używanie funkcji Nextval w instrukcji wstawiania
Możemy również użyć funkcji nextval w instrukcji insert jako klucza podstawowego. Na przykład:
włóż w użytkownicy ( ID ,imię,karta_kredytowa,kraj )wartości ( test_sekwencja.następna wartość, „James Smith” , '4278793631436711' , 'Zjednoczone Emiraty Arabskie' ) ;
W podanym przykładzie wywołujemy funkcję nextval z sekwencji test_sequence, aby wstawić wartość dla kolumny id w tabeli.
Wniosek
W tym poście odkryłeś, jak używać funkcji Oracle nextval do pobierania następnej wartości w sekwencji. Nauczyłeś się również, jak używać tej funkcji do iteracji po zbiorze wartości lub do wstawiania unikalnej wartości w kolumnie tabeli.