カーソル変数使用方法

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

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

TOP PL/SQL書式 PL/SQL応用

カーソル変数使用方法


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


カーソル変数使用方法



カーソル変数は、REF CURSOR型で定義された変数です。カーソル(CURSOR)では、特定のSELECT文しかオープンできませんでしたが、カーソル変数を使用すると1つのカーソルで複数のSELECT文を自由にオープン出来ます。カーソル変数を使用した複数行処理を行うには宣言部でカーソル変数を定義します。

◆カーソル変数の定義

@ REF CURSOR型の定義
TYPE <カーソル型> IS REF CURSOR [ RETURN <データ型> ];

A カーソル変数の定義
<カーソル変数名> <カーソル型>



以下にカーソル変数を使用したプロシージャ作成例を示します。

SQL> CREATE OR REPLACE PROCEDURE cursorvariable_sample
2 IS
3 TYPE cursorvariable_type IS REF CURSOR;
4 cv cursorvariable_type;
5 rec1 dba_users%ROWTYPE;
6 rec2 dba_objects%ROWTYPE;
7 BEGIN
8 OPEN cv FOR SELECT * FROM dba_users;
9 LOOP
10 FETCH cv INTO rec1;
11 EXIT WHEN cv%NOTFOUND;
12 DBMS_OUTPUT.PUT_LINE(rec1.username || ' ' || rec1.account_status);
13 END LOOP;
14 CLOSE cv;
15
16 OPEN cv FOR SELECT * FROM dba_objects WHERE object_name='PACKAGE_SAMPLE;
17 LOOP
18 FETCH cv INTO rec2;
19 EXIT WHEN cv%NOTFOUND;
20 DBMS_OUTPUT.PUT_LINE(rec2.object_name || ' ' || rec2.object_type || ' ' || rec2.status);
21 END LOOP;
22 CLOSE cv;
23
24 END;
25 /

プロシージャが作成されました。

SQL>


以下に実行例を示します。

SQL> SET SERVEROUTPUT ON
SQL> EXECUTE cursorvariable_sample
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
PACKAGE_SAMPLE PACKAGE VALID
PACKAGE_SAMPLE PACKAGE BODY VALID

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

SQL>



PL/SQLの応用

 ● カーソル変数使用方法
 ⇒カーソル変数を使用し1つのカーソルで複数のSELECT文を自由にオープン出来ます。

 ● 動的なPL/SQL実行方法
 ⇒プログラムの実行時にSQLを組み立て発行することが出来ます。

 ● PL/SQLパフォーマンス向上
 ⇒PL/SQL機能を使用することでパフォーマンスの向上が出来ます。


 ● PL/SQLコンパイルエラー確認方法
 ⇒PL/SQLコンパイルエラーの詳細内容を確認することが出来ます。





スポンサードリンク

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