記事内に広告が含まれています。

【Oracle PL/SQL】SELECTしたデータをカーソルに入れる方法

Oracle PL/SQL でのカーソルの初歩の初歩です。この辺り、初めて触る方はマジでつまずくので、初心者向けにメモしておきます。

【スポンサーリンク】

カーソルの基本形

恐らく、このページにたどり着いた人は、PL/SQL初心者か、復習したい人か、ど忘れしてしまった人のいずれかです。なので、超シンプルなカーソルの基本形を書いておきます。

DECLARE
  -- カーソル宣言(データを取得して、カーソルという箱にぶっこむ)
  CURSOR カーソル名 IS
  SELECT カラム1, カラム2
    FROM テーブル
   WHERE 条件;

  -- カーソルのレコード型宣言
  my_record my_cursor%ROWTYPE;

BEGIN
  -- カーソルをオープン(閉じたままでは使えない)
  OPEN my_cursor;

  -- カーソルからデータをフェッチして処理
  FETCH my_cursor INTO my_record;

  -- フェッチしたデータの処理
  --※ここに色々処理を書いたりする

  -- カーソルをクローズ(開けたら閉じる)
  CLOSE my_cursor;
END;
/

とまあこんな具合です。

DECLARE と BEGIN ですが、カーソルを使用する場合のサンプルコード上の大きくは次の役割です。

  • DECLARE 部:変数やカーソルを作る
  • BEGIN 部:変数やカーソルを使って処理する

かなり乱暴ですが、詳しく書くと際限がないので、とりあえずこんな感じでOK。

【スポンサーリンク】

SELECTしたデータをカーソルに入れる

この記事の本題ですが、SELECTしたデータをカーソルに入れたいということです。テストデータはコチラを使います。

【SQL】テストデータ(都道府県コード・地方コード)
都道府県コードと地方コードのテストデータです。

上記テストデータから、関東と近畿の都道府県をカーソルに入れて、それをひたすらコンソール出力するという、PL/SQLのサンプルコードを書いてみました。

DECLARE
  -- カーソル宣言
  CURSOR my_cursor IS
  SELECT PREF.PREF_CODE
       , PREF.PREF_NAME
       , REG.REGION_NAME
    FROM PREF_TABLE PREF
    INNER JOIN REGION_TABLE REG
            ON REG.REGION_CODE = PREF.REGION_CODE
    WHERE REG.REGION_CODE IN ('KNT', 'KNK');

  -- カーソルのレコード型宣言
  my_record my_cursor%ROWTYPE;

BEGIN
  -- カーソルをオープン
  OPEN my_cursor;

  -- カーソルからデータをフェッチして処理
  LOOP
    FETCH my_cursor INTO my_record;
    EXIT WHEN my_cursor%NOTFOUND;

    -- データの処理
    DBMS_OUTPUT.PUT_LINE('都道府県:' || my_record.PREF_NAME || ', 地方: ' || my_record.REGION_NAME);
  END LOOP;

  -- カーソルをクローズ
  CLOSE my_cursor;
END;
/

とりあえず備忘録的なものなので、実用性は皆無です。

とりあえず出てきましたね。

超絶シンプルなPL/SQLなので、本来は BEGIN 部に条件分岐とか入れたらサンプルとしては良いかもしれませんが、基本の基本を思い出したい時用のページなのでこれくらいで。

【スポンサーリンク】

関連記事

【SQL】テストデータ(都道府県コード・地方コード)
都道府県コードと地方コードのテストデータです。