ORACLE SQL リファレンス(逆引き)

ORACLE SQL リファレンス

Web oracle.se-free.com
明示的カーソルでレコードを複数件SELECTする(CURSOR)
スポンサード リンク

DBからレコードを複数件取得する場合はカーソルを使用します。


DECLARE
 CURSOR カーソル変数 IS SELECT文;
 レコード格納変数 カーソル変数%ROWTYPE;  ・・・ 取得レコードを格納する変数定義
BEGIN
 OPEN カーソル変数
 LOOP
  FETCH カーソル変数 INTO レコード格納変数; ・・・ フェッチ
  EXIT WHEN カーソル変数%NOTFOUND;     ・・・ レコードの最後でループを終了
   :
   :
 END LOOP
 CLOSE カーソル変数
END;


明示的カーソルを使用したSELECT方法です。

カーソルを明示的に、オープン/クローズしています。

カーソルの属性「%NOTFOUND」を確認することでレコードの最後を確認しています。



例1) 表「dept」からSELECTした項目「dept_id」、「dept_name」を全件数、一覧表示する。
declare

 -- カーソル定義
 cursor c_depts is select dept_id,dept_name from dept;
 -- SELECTで取得したレコードを代入する変数の定義
 dept_rec c_depts%rowtype;

begin

 open c_depts;

 loop
  -- フェッチ時に、取得項目を変数に代入。
  fetch c_depts into dept_rec;
  -- レコードが無くなればループ終了
  exit when c_depts%notfound;

  dbms_output.put_line('部門コード1:' || dept_rec.dept_id);
  dbms_output.put_line('部門名称:' || dept_rec.dept_name);
 end loop;

 close c_depts;

end;

スポンサード リンク


レコードを1件SELECTする(SELECT〜INTO)
明示的カーソルでレコードを複数件SELECTする(CURSOR)
暗黙的カーソルでレコードを複数件SELECTする(CURSOR)
カーソルの属性
動的SQLでレコードを1件SELECTする(EXECUTE IMMEDIATE)
動的SQLでカーソルを使用してレコードを複数SELECTする(CURSOR)
コミット・ロールバック(COMMIT、ROLLBACK)

PL/SQL へ
忘れっぽいエンジニアのオラクルSQLリファレンス TOPへ