【Oracle】シーケンスを進める方法

Oracleデータベースでシーケンス(Sequence)を進める方法をまとめてみました。

シーケンスを進める

SELECT my_sequence.NEXTVAL FROM dual;

これにより、シーケンスが1つずつ順番に進みます。この方法は通常の運用でよく使用されます。

複数進めたい場合は上記を何回も繰り返して実行します。

シーケンスを一気に進めたい場合は?

通常はNEXTVALを使用して次の値を取得しますが、時には一気に進めたい場合があります。

数十件程度であればNEXTVALを連続で使用するほうが手っ取り早いのですが、数千件とかになってくるとそうも言っていられません。

そんなときは以下のいずれかの方法を使用することで、シーケンスを一気に進めることが可能です。

インクリメント値を変更して複数進める

シーケンスのインクリメント値を一時的に変更し、指定した回数だけ一気に進める方法です。

ALTER SEQUENCE my_sequence INCREMENT BY 100;
SELECT my_sequence.NEXTVAL FROM dual;
ALTER SEQUENCE my_sequence INCREMENT BY 1;

PL/SQLを使用して進める

PL/SQLブロックを使用してループを回し、複数回NEXTVALを呼び出す方法です。

DECLARE
   v_next_val NUMBER;
BEGIN
   FOR i IN 1..100 LOOP
      SELECT my_sequence.NEXTVAL INTO v_next_val FROM dual;
   END LOOP;
END;

CONNECT BY LEVELを使用する

CONNECT BY LEVELを利用して、指定した回数だけシーケンスの次の値を進める方法です。

SELECT LEVEL, my_sequence.NEXTVAL
FROM DUAL
CONNECT BY LEVEL <= 1000;

まとめ

Oracleデータベースにおいて、シーケンスを一気に進める方法と1つずつ進める方法があります。状況に応じて柔軟に選択し、データベースの操作を効果的に行いましょう。