somemo programming etc.

プログラマ、雑記、プログラミング関係はLinkから、数式はこっちでまとめていることが多い

【Oracle】PL/SQLを使ってシーケンスを進める

前回書いたシーケンスの進め方より良い方法を学びました。今まで手をつけていなかったPL/SQLを使う方法です。

PL/SQL

概要はWikiを参照してください。SQLでは普通できない手続きプログラミングを行えるようになります。変数を定義したり、SQLの結果を変数に代入したり、その値を制御構造で分岐につかったり、ループ処理を行うことができます。

処理の開始と終了

beginで始まり、end;で終了します。この中に処理を記載していきます。

begin
--処理
end;

変数の定義

beginより前で行います。開始終了内で取得しておきたい値を変数に格納して使います。以下は、number型8桁の変数「dummy」を定義しています。

declare
  dummy number(8, 0);
begin

for(固定回数)

1から10まで繰り替え処理を行いたい場合、以下のように記述します。

for i in 1..10 LOOP
  --処理
LOOP;

シーケンスを進める

シーケンス名.nextvalで次の値を取得して進めます。

select sequence_name.nextval from dual;

シーケンスを10進める

今までの方法を組み合わせてシーケンスを進めます。select文で取得できるカラムは変数に格納しないと怒られるので、dummy変数に格納しています。シーケンスの最終値を確認してから実行しましょう。10の部分を確認しつつ変数に格納してできるかもしれません。

declare
  dummy number(8, 0);
begin
  for i in 1..10 LOOP
    select sequence_name.nextval into dummy from dual;
  LOOP;
end;