PL/SQLでカーソルを使う(基本編):超入門「PL/SQL」(6)(3/3 ページ)
本連載は、「PL/SQL(Procedure Language/Structured Query Language)」を理解し、活用していくための実践講座です。今回から「カーソル」について2回に分けて解説します。
カーソル属性
カーソル属性を使用すると、「取り出す行があるかどうか」「これまで何行取り出したのか」のような、現在のカーソルの状態を確認できます。そのため、カーソル属性で得られた結果に基づいて次の実行内容を決定できます。それでは、どのような属性があるのかを次の表で見てみましょう。
属性 | 意味 |
---|---|
%NOTFOUND | 直前のFETCH文が行を戻した場合はFALSE、行を戻さない場合はTRUE |
%FOUND | 直前のFETCH文が行を戻した場合はTRUE、行を戻さない場合はFALSE |
%ROWCOUNT | これまでに取り出した行数 |
%ISOPEN | カーソルがオープンしている場合はTRUE、クローズしている場合はFALSE |
カーソル属性は次のように指定します。
<カーソル名><カーソル属性>
次のサンプルプログラムでは、%NOTFOUND属性、%ROWCOUNT属性を使用しています。
SQL> DECLARE 2 CURSOR dept_cur IS SELECT * FROM dept; 3 dept_rec dept_cur%ROWTYPE; 4 BEGIN 5 OPEN dept_cur; 6 LOOP 7 FETCH dept_cur INTO dept_rec; 8 EXIT WHEN dept_cur%NOTFOUND; 9 DBMS_OUTPUT.PUT_LINE(dept_cur%ROWCOUNT); 10 END LOOP; 11 CLOSE dept_cur; 12 END; 13 / 1 2 3 4
%NOTFOUND属性を、EXIT WHEN文の条件として使用しています。カーソルDEPT_CURの結果セットは4行であるため、4回目のLOOP処理までは%NOTFOUND属性をFALSEと識別し、処理を続行します。その後、5回目のLOOP処理の際に結果セットから取り出す行がないため、%NOTFOUND属性がTRUEと識別し、LOOP処理を終了します。
%ROWCOUNT属性は、カーソルの結果セットから取り出した行数をカウントし、その結果をDBMS_OUTPUT.PUT_LINEで表示するために使用しています。実行結果からは、カーソルの結果セットから4行を取り出したことが分かります(末尾の4行)。
いかがでしたでしょうか。カーソル処理では複数のステップが必要になるため、難しく感じられた方もいるかもしれません。しかし、カーソルは多くの場面で使用しますので、この機会にしっかりと理解しておきましょう。
次回は、カーソル処理をより効率的に行うための応用編になります。
筆者紹介
小笠原宏幸(おがさわら ひろゆき)
株式会社アシスト データベース技術本部所属。普段はOracle、PostgreSQL、JP1などの分野で研修講師を担当。また、書籍「SQL逆引き大全363の極意」(株式会社秀和システム)をはじめ、「これならわかるOracle超入門教室」(株式会社翔泳社)、「プロとしてのPL/SQL入門」(SBクリエイティブ株式会社)の共著も担当。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- DBエンジンを最大限に生かすバッチアプリの作り方
第1回では、バッチアプリケーションを設計するうえで考慮すべき4つのポイントについて解説しました。今回は、Oracleデータベースを最大限に利用したバッチアプリケーションの実装テクニックについて解説します。 - ODTを使ったVisual StudioからのPL/SQL開発
オラクル社が提供する3つの.NET環境用開発ツール「ODP.NET」「ODT」「ODE.NET」。Oracle 10gリリース2に対応した最新版を使って、Oracleデータベースを前提とした.NETアプリケーションの開発手法を解説する。(編集部) - 更新/挿入/削除のSQLを高速化する3つの技とは?
本連載では、Oracleデータベースのパフォーマンス・チューニングの中から、特にSQLのチューニングに注目して、実践レベルの手法を解説する。読者はOracleデータベースのアーキテクチャを理解し、運用管理の実務経験を積んでいることが望ましい。対象とするバージョンは現状で広く使われているOracle9iの機能を基本とするが、Oracle 10gで有効な情報も随時紹介していく。(編集局) - 【Oracle Database】忘れていませんか? 「アラートログ調査」に必要な、たった3つのキホン
データベース管理システムの運用でトラブルが発生したらどうするか。データベースサポートスペシャリストが現場目線の解決Tipsをお届けします。今回は基本編として「アラートログの調査で押さえるべき3つのポイント」を解説します。【Oracle Database 12c対応版】