Oracle シーケンス Nextval 関数

Oracle Shikensu Nextval Guan Shu



Oracle では、シーケンスとは、指定された増分に従って一連の数値を生成するデータベース オブジェクトを指します。シーケンスは、通常、データベース テーブル内のレコードの一意の主キー値を生成するために使用されます。

このチュートリアルでは、Oracle シーケンスを操作するときに NEXTVAL 関数を使用する方法を学習します。

注: このチュートリアルでは、Oracle シーケンスの作成の基本については説明しません。詳細については、Oracle シーケンスに関するチュートリアルを参照してください。







Oracle Nextval 関数

Oracle シーケンスの nextval 関数は、特定のシーケンスの次の値を取得するために使用されます。



次のコード スニペットに示すように、関数の構文を表現できます。



シーケンス名.nextval

この関数は、引数またはパラメーターを受け入れません。次に、定義されたシーケンスで次の値を返します。





機能デモの例

例を考えてみましょう。次のコードに示すように、単純な Oracle シーケンスを定義することから始めます。

CREATE SEQUENCE test_sequence
皮切りに 1
増分 1 ;

CREATE SEQUENCE ステートメントを使用して、新しい Oracle シーケンスを初期化します。次に、シーケンスが開始する値と、新しく生成された値ごとに増分値を定義します。



この例では、test_sequence は値 1 から始まり、新しい値ごとに 1 ずつ増加します。これにより、1、2、3、4、5 などで始まる一連の数値が生成されます。

Oracle Nextval 関数の使用

次に示すように、test_sequence シーケンスから次の値関数を使用して、次の値を取得できます。

選択する デュアルからの test_sequence.nextval;

次に示すように、シーケンスから次の値が返されます。

ステートメントを再度呼び出すと、シリーズの次の値である 2 が返されます。

これは、値が使い尽くされるか、シーケンスで定義されている最大値に達するまで続きます。最小値と最大値を設定する方法については、Oracle シーケンス チュートリアルを参照してください。

Nextval 関数を使用して値をループする

次のコードに示すように、 nextval 関数を使用して 1 から 10 までの数字を出力することもできます。

CREATE SEQUENCE looper_sequence
皮切りに 1
増分 1 ;

セットする SERVEROUTPUT オン;
始める
私のために 1 .. 10
ループ
DBMS_OUTPUT.PUT_LINE ( looper_sequence.nextval ) ;
エンドループ;
終わり;

提供されたコードは、1 から始まり、新しく生成された値ごとに 1 ずつ増加する looper_sequence という新しいシーケンスを作成します。

次に、DBMS_OUTPUT パッケージが SQL*Plus コンソールにメッセージを表示できるようにする SERVEROUTPUT オプションを有効にします。

最後に、end/begin ステートメント内に for ループを囲んで、1 から 10 までの値の範囲を反復します。次に、範囲内の各値に対して DBMS_OUTPUT.PUT_LINE 関数を呼び出し、looper_sequence シーケンスの次の値をコンソール。

このコードは、ルーパー シーケンスの次の 10 個の値を出力します。この場合、新しい呼び出しごとに 1 から 10 または 11 から 20 などの値になります。

結果の出力 :

1
2
3
4
5
6
7
8
9
10


PL / SQL プロシージャーが正常に完了しました。

Insert ステートメントでの Nextval 関数の使用

insert ステートメントで nextval 関数を主キーとして使用することもできます。例えば:

挿入する ユーザー ( ID ,first_name,credit_card,country )
( test_sequence.nextval、 「ジェームズ・スミス」 「4278793631436711」 'アラブ首長国連邦' ) ;

この例では、test_sequence から nextval 関数を呼び出して、id 列の値をテーブルに挿入します。

結論

この投稿では、Oracle の nextval 関数を使用してシーケンス内の次の値をフェッチする方法を発見しました。また、関数を使用して一連の値を反復処理する方法、またはテーブルの列に一意の値を挿入する方法も学習しました。