PL/SQLのカーソル(CURSOR)

実践オラクルデータベース構築・運用

オラクルデータベース構築オラクルデータベース運用SQL書式PL/SQL書式Oracle Master試験

TOP PL/SQL書式 PL/SQL文法

PL/SQLのカーソル(CURSOR)


スポンサードリンク
スポンサードリンク


PL/SQLのカーソル(CURSOR)



検索したデータを変数に代入する方法の一つとして、カーソル(CURSOR)があります。カーソルは、SELECT文の検索結果が複数行の場合でも処理できます。カーソルは複数行を一度に変数に代入するのではなく、1行ずつアクセスし1行ずつ変数に代入して処理を行います。

◆カーソル(CURSOR)の書式

【書式】カーソルの定義
CURSOR <カーソル名> IS <問い合わせ文>;

【書式】カーソルの実行(OPEN文)
OPEN <カーソル名>;

【書式】データの取り出し(FETCH INTO文)
FETCH <カーソル名> INTO <変数名> ;

【書式】カーソル終了(CLOSE文)
CLOSE <カーソル名> ;


以下にカーソル(CURSOR)の使用例を示します。

SQL> SET ECHO ON
SQL> SET SERVEROUTPUT ON
SQL> @cursor_sample
SQL> DECLARE
2 CURSOR tcur IS SELECT username,account_status from dba_users;
3 t2cur tcur%ROWTYPE;
4 BEGIN
5 OPEN tcur;
6 LOOP
7 FETCH tcur INTO t2cur;
8 EXIT WHEN tcur%NOTFOUND;
9 DBMS_OUTPUT.PUT_LINE(t2cur.username || ' ' || t2cur.account_status);
10 END LOOP;
11 CLOSE tcur;
12 END;
13 /
SYSTEM OPEN
SYS OPEN
ANONYMOUS OPEN
APEX_PUBLIC_USER LOCKED
APEX_040000 LOCKED
FLOWS_FILES LOCKED
OUTLN EXPIRED & LOCKED
XS$NULL EXPIRED & LOCKED
XDB EXPIRED & LOCKED
CTXSYS EXPIRED & LOCKED
MDSYS EXPIRED & LOCKED
HR EXPIRED & LOCKED

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

SQL>
SQL>

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
カーソルの処理で必要があった「OPEN文」、「FETCH文」、「CLOSE文」や取り出したデータを格納するための変数定義がカーソルFORループを使用することで自動化され処理全体が簡略化できます。以下にカーソルFORループについて記載します。

◆カーソルFORループの書式

【書式】カーソルの定義
CURSOR <カーソル名> IS <問い合わせ文>;

【書式】カーソルFORループ
FOR <ループ索引名> IN <カーソル名> LOOP
    <処理名>
END LOOP;

以下にカーソルFORループの使用例を示します。

SQL> SET ECHO ON
SQL> SET SERVEROUTPUT ON
SQL> @cursorfor_sample
SQL> DECLARE
2 CURSOR tcur IS SELECT username,account_status from dba_users;
3 BEGIN
4 FOR t2cur IN tcur LOOP
5 DBMS_OUTPUT.PUT_LINE(t2cur.username || ' ' || t2cur.account_status);
6 END LOOP;
7 END;
8 /
SYSTEM OPEN
SYS OPEN
ANONYMOUS OPEN
APEX_PUBLIC_USER LOCKED
APEX_040000 LOCKED
FLOWS_FILES LOCKED
OUTLN EXPIRED & LOCKED
XS$NULL EXPIRED & LOCKED
XDB EXPIRED & LOCKED
CTXSYS EXPIRED & LOCKED
MDSYS EXPIRED & LOCKED
HR EXPIRED & LOCKED

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

SQL>




PL/SQL基礎文法
 ● PL/SQLのコメント

 ● PL/SQLの変数と定数

 ● PL/SQLのIF文

 ● PL/SQLのCASE文

 ● PL/SQLのLOOP文

 ● PL/SQLのGOTO文

 ● PL/SQLのNULL文

 ● PL/SQLのSELECT INTO文

 ● PL/SQLのカーソル(CURSOR)

 ● PL/SQLの例外処理


スポンサードリンク

リンク集 / 免責事項サイトマップ問い合わせ
Copyright (C) 2012  実践オラクルデータベース構築・運用  All rights reserved