В этом руководстве мы узнаем, как использовать функцию NEXTVAL при работе с последовательностями Oracle.
ПРИМЕЧАНИЕ. В этом руководстве не рассматриваются основы создания последовательности Oracle. Обратитесь к нашему руководству по последовательностям Oracle, чтобы узнать больше.
Функция Oracle Nextval
Функция nextval в последовательности Oracle используется для получения следующего значения в заданной последовательности.
Мы можем выразить синтаксис функции, как показано в следующем фрагменте кода:
имя_последовательности.nextval
Функция не принимает никаких аргументов или параметров. Затем он возвращает следующее значение в определенной последовательности.
Пример демонстрации функций
Рассмотрим пример. Начнем с определения простой последовательности Oracle, как показано в следующем коде:
СОЗДАТЬ ПОСЛЕДОВАТЕЛЬНОСТЬ test_sequenceНАЧАТЬ С 1
УВЕЛИЧЕНИЕ НА 1 ;
Мы используем оператор CREATE SEQUENCE для инициализации новой последовательности Oracle. Затем мы определяем, с какого значения начинается последовательность, и значение приращения для каждого нового сгенерированного значения.
В нашем примере test_sequence начинается со значения 1 и увеличивается на единицу при каждом новом значении. Это должно сгенерировать ряд числовых значений, начиная с 1,2,3,4,5… и т. д.
Использование функции Oracle Nextval
Мы можем использовать функцию следующего значения из последовательности test_sequence, чтобы получить следующее значение, как показано ниже:
Выбрать test_sequence.nextval из двойного;Это должно вернуть следующее значение из последовательности, как показано ниже:
Если вы снова вызовете оператор, он должен вернуть следующее значение в ряду, равное 2.
Это продолжается до тех пор, пока значения не будут исчерпаны или вы не достигнете максимального значения, определенного в последовательности. Посмотрите наш учебник по последовательности Oracle, чтобы узнать, как установить минимальное и максимальное значения.
Использование функции Nextval для циклического перебора значений
Мы также можем использовать функцию nextval для вывода чисел от 1 до 10, как показано в следующем коде:
СОЗДАТЬ ПОСЛЕДОВАТЕЛЬНОСТЬ looper_sequenceНАЧАТЬ С 1
УВЕЛИЧЕНИЕ НА 1 ;
установлен СЕРВЕРВЫХОД включен;
НАЧИНАТЬ
ДЛЯ Я В 1 .. 10
ПЕТЛЯ
DBMS_OUTPUT.PUT_LINE ( looper_sequence.nextval ) ;
КОНЕЦ ПЕТЛИ;
КОНЕЦ;
Предоставленный код создает новую последовательность с именем looper_sequence, которая начинается с 1 и увеличивается на 1 для каждого нового сгенерированного значения.
Затем мы включаем параметр SERVEROUTPUT, который позволяет пакету DBMS_OUTPUT отображать сообщения в консоли SQL*Plus.
Наконец, мы заключаем цикл for в оператор end/begin для перебора диапазона значений от 1 до 10. Затем мы вызываем функцию DBMS_OUTPUT.PUT_LINE для каждого значения в диапазоне и печатаем следующее значение в последовательности looper_sequence в приставка.
Код печатает следующие десять значений в последовательности цикла. В нашем случае это будет значение от 1 до 10 или от 11 до 20… и так далее для каждого нового звонка.
Результирующий вывод :
12
3
4
5
6
7
8
9
10
PL / Процедура SQL успешно завершена.
Использование функции Nextval в операторе вставки
Мы также можем использовать функцию nextval в операторе вставки в качестве первичного ключа. Например:
вставить в пользователи ( я бы ,first_name,credit_card,country )ценности ( test_sequence.nextval, 'Джеймс Смит' , '4278793631436711' , 'Объединенные Арабские Эмираты' ) ;
В данном примере мы вызываем функцию nextval из test_sequence, чтобы вставить значение для столбца id в таблицу.
Заключение
В этом посте вы узнали, как использовать функцию Oracle nextval для получения следующего значения в последовательности. Вы также узнали, как использовать эту функцию для перебора набора значений или для вставки уникального значения в столбец таблицы.