704
PL/SQL ユーザーズ・ガイドおよびリファレンス リリース 29.22002 7 部品番号:J06255-01

PL/SQL ユーザーズ・ガイドおよびリファレンス, リリー …PL/SQL ユーザーズ・ガイドおよびリファレンス, リリース2(9.2) 部品番号:J06255-01

  • Upload
    others

  • View
    9

  • Download
    0

Embed Size (px)

Citation preview

  • PL/SQL

    ユーザーズ・ガイドおよびリファレンス

    リリース 2(9.2)

    2002 年 7 月

    部品番号:J06255-01

  • PL/SQL ユーザーズ・ガイドおよびリファレンス , リリース 2(9.2)

    部品番号:J06255-01

    原本名:PL/SQL User's Guide and Reference, Release 2 (9.2)

    原本部品番号:A96624-01

    原本著者: John Russell

    原本協力者:Tom Portfolio, Shashaanka Agrawal, Cailein Barclay, Dmitri Bronnikov, Sharon Castledine, Thomas Chang, Ravindra Dani, Chandrasekharan Iyer, Susan Kotsovolos, Neil Le, Warren Li, Chris Racicot, Murali Vemulapati, Guhan Viswanathan, Minghui Yang

    Copyright © 1996, 2002, Oracle Corporation. All rights reserved.

    Printed in Japan.

    制限付権利の説明

    プログラム(ソフトウェアおよびドキュメントを含む)の使用、複製または開示は、オラクル社との契約に記された制約条件に従うものとします。著作権、特許権およびその他の知的財産権に関する法律により保護されています。

    当プログラムのリバース・エンジニアリング等は禁止されております。

    このドキュメントの情報は、予告なしに変更されることがあります。オラクル社は本ドキュメントの無謬性を保証しません。

    * オラクル社とは、Oracle Corporation(米国オラクル)または日本オラクル株式会社(日本オラクル)を指します。

    危険な用途への使用について

    オラクル社製品は、原子力、航空産業、大量輸送、医療あるいはその他の危険が伴うアプリケーションを用途として開発されておりません。オラクル社製品を上述のようなアプリケーションに使用することについての安全確保は、顧客各位の責任と費用により行ってください。万一かかる用途での使用によりクレームや損害が発生いたしましても、日本オラクル株式会社と開発元である Oracle Corporation(米国オラクル)およびその関連会社は一切責任を負いかねます。 当プログラムを米国国防総省の米国政府機関に提供する際には、『Restricted Rights』と共に提供してください。この場合次の Notice が適用されます。

    Restricted Rights Notice

    Programs delivered subject to the DOD FAR Supplement are "commercial computer software" and use, duplication, and disclosure of the Programs, including documentation, shall be subject to the licensing restrictions set forth in the applicable Oracle license agreement. Otherwise, Programs delivered subject to the Federal Acquisition Regulations are "restricted computer software" and use, duplication, and disclosure of the Programs shall be subject to the restrictions in FAR 52.227-19, Commercial Computer Software - Restricted Rights (June, 1987). Oracle Corporation, 500 Oracle Parkway, Redwood City, CA 94065.

    このドキュメントに記載されているその他の会社名および製品名は、あくまでその製品および会社を識別する目的にのみ使用されており、それぞれの所有者の商標または登録商標です。

  • i

    目次目次目次目次

    はじめにはじめにはじめにはじめに ........................................................................................................................................................................ xvii

    PL/SQL の新機能の新機能の新機能の新機能 ................................................................................................................................................... xxv

    1 PL/SQL の概要の概要の概要の概要PL/SQL の主な特長の主な特長の主な特長の主な特長 ............................................................................................................................................... 1-2

    ブロック構造 ................................................................................................................................................... 1-3

    変数と定数 ....................................................................................................................................................... 1-4

    カーソル ........................................................................................................................................................... 1-5

    カーソル FOR ループ ..................................................................................................................................... 1-6

    カーソル変数 ................................................................................................................................................... 1-6

    属性 ................................................................................................................................................................... 1-7

    制御構造 ........................................................................................................................................................... 1-8

    モジュール性 ................................................................................................................................................. 1-11

    データの抽象化 ............................................................................................................................................. 1-13

    情報の隠ぺい ................................................................................................................................................. 1-15

    エラー処理 ..................................................................................................................................................... 1-16

    PL/SQL アーキテクチャアーキテクチャアーキテクチャアーキテクチャ ..................................................................................................................................... 1-17Oracle データベース・サーバー ................................................................................................................ 1-18

    Oracle のツール製品 .................................................................................................................................... 1-19

    PL/SQL の利点の利点の利点の利点 ..................................................................................................................................................... 1-20SQL のサポート ............................................................................................................................................ 1-20

    オブジェクト指向プログラミングのサポート ......................................................................................... 1-21

    パフォーマンスの向上 ................................................................................................................................. 1-21

    高い生産性 ..................................................................................................................................................... 1-22

  • ii

    完全な移植性 ................................................................................................................................................. 1-23

    SQL との緊密な統合 .................................................................................................................................... 1-23

    優れたセキュリティ ..................................................................................................................................... 1-23

    2 PL/SQL の基礎の基礎の基礎の基礎キャラクタ・セットキャラクタ・セットキャラクタ・セットキャラクタ・セット ............................................................................................................................................... 2-2字句単位字句単位字句単位字句単位 ................................................................................................................................................................... 2-2

    デリミタ ........................................................................................................................................................... 2-3

    識別子 ............................................................................................................................................................... 2-4

    リテラル ........................................................................................................................................................... 2-7

    コメント ........................................................................................................................................................... 2-9

    宣言宣言宣言宣言 ......................................................................................................................................................................... 2-11DEFAULT の使用 ......................................................................................................................................... 2-12

    NOT NULL の使用 ....................................................................................................................................... 2-12

    %TYPE の使用 .............................................................................................................................................. 2-13

    %ROWTYPE の使用 ..................................................................................................................................... 2-14

    宣言の制限 ..................................................................................................................................................... 2-16

    PL/SQL の命名規則の命名規則の命名規則の命名規則 ............................................................................................................................................. 2-17PL/SQL の識別子の有効範囲と可視性の識別子の有効範囲と可視性の識別子の有効範囲と可視性の識別子の有効範囲と可視性 ............................................................................................................. 2-19変数の代入変数の代入変数の代入変数の代入 ............................................................................................................................................................. 2-22

    ブール値の代入 ............................................................................................................................................. 2-22

    SQL 問合せ結果の PL/SQL 変数への代入 ............................................................................................... 2-23

    PL/SQL の式および比較の式および比較の式および比較の式および比較 ..................................................................................................................................... 2-23論理演算子 ..................................................................................................................................................... 2-25

    ブール式 ......................................................................................................................................................... 2-29

    CASE 式 ......................................................................................................................................................... 2-31

    比較文と条件文での NULL の扱い ........................................................................................................... 2-33

    組込みファンクション組込みファンクション組込みファンクション組込みファンクション ......................................................................................................................................... 2-35

  • iii

    3 PL/SQL のデータ型のデータ型のデータ型のデータ型事前定義されたデータ型事前定義されたデータ型事前定義されたデータ型事前定義されたデータ型 ....................................................................................................................................... 3-2

    数値型 ............................................................................................................................................................... 3-3

    キャラクタ・タイプ ....................................................................................................................................... 3-5

    各国語キャラクタ・タイプ ......................................................................................................................... 3-10

    LOB 型 ............................................................................................................................................................ 3-12

    ブール型 ......................................................................................................................................................... 3-14

    日時および時間隔型 ..................................................................................................................................... 3-14

    日時および時間隔の演算 ............................................................................................................................. 3-19

    日付および時刻のサブタイプを使用する場合の切捨て問題の回避 ..................................................... 3-19

    ユーザー定義のサブタイプユーザー定義のサブタイプユーザー定義のサブタイプユーザー定義のサブタイプ ................................................................................................................................. 3-20サブタイプの定義 ......................................................................................................................................... 3-20

    サブタイプの使用 ......................................................................................................................................... 3-21

    データ型変換データ型変換データ型変換データ型変換 ......................................................................................................................................................... 3-22明示的な変換 ................................................................................................................................................. 3-22

    暗黙的な変換 ................................................................................................................................................. 3-23

    暗黙的変換と明示的変換 ............................................................................................................................. 3-24

    DATE の値 ..................................................................................................................................................... 3-24

    RAW および LONG RAW の値 ................................................................................................................. 3-25

    4 PL/SQL の制御構造の制御構造の制御構造の制御構造PL/SQL の制御構造の概要の制御構造の概要の制御構造の概要の制御構造の概要 ................................................................................................................................... 4-2条件制御条件制御条件制御条件制御 : IF 文および文および文および文および CASE 文文文文 .......................................................................................................................... 4-3

    IF-THEN 文 ..................................................................................................................................................... 4-3

    IF-THEN-ELSE 文 ........................................................................................................................................... 4-4

    IF-THEN-ELSIF 文 ......................................................................................................................................... 4-5

    CASE 文 ........................................................................................................................................................... 4-6

    PL/SQL 条件文のガイドライン ................................................................................................................... 4-8

    反復制御反復制御反復制御反復制御 : LOOP 文と文と文と文と EXIT 文文文文 ............................................................................................................................ 4-9LOOP ................................................................................................................................................................ 4-9WHILE-LOOP ............................................................................................................................................... 4-12FOR-LOOP .................................................................................................................................................... 4-13

    順次制御順次制御順次制御順次制御 : GOTO 文と文と文と文と NULL 文文文文 ....................................................................................................................... 4-17GOTO 文 ........................................................................................................................................................ 4-17

    NULL 文 ........................................................................................................................................................ 4-21

  • iv

    5 PL/SQL のコレクションとレコードのコレクションとレコードのコレクションとレコードのコレクションとレコードコレクションコレクションコレクションコレクション ........................................................................................................................................................... 5-2

    ネストした表 ................................................................................................................................................... 5-3VARRAY .......................................................................................................................................................... 5-4

    結合配列(索引付き表) ................................................................................................................................. 5-4

    グローバリゼーション設定が結合配列の VARCHAR2 キーに与える影響 .......................................... 5-5

    使用する使用する使用する使用する PL/SQL コレクション型の選択コレクション型の選択コレクション型の選択コレクション型の選択 .......................................................................................................... 5-6ネストした表と結合配列の選択 ................................................................................................................... 5-6

    ネストした表と VARRAY との使い分け .................................................................................................... 5-7

    コレクション型の定義コレクション型の定義コレクション型の定義コレクション型の定義 ........................................................................................................................................... 5-7PL/SQL コレクション型に相当する SQL の型の定義 ............................................................................. 5-9

    PL/SQL のコレクション変数の宣言のコレクション変数の宣言のコレクション変数の宣言のコレクション変数の宣言 ................................................................................................................. 5-10コレクションの初期化と参照コレクションの初期化と参照コレクションの初期化と参照コレクションの初期化と参照 ............................................................................................................................. 5-12

    コレクション要素の参照 ............................................................................................................................. 5-14

    コレクションの代入コレクションの代入コレクションの代入コレクションの代入 ............................................................................................................................................. 5-15コレクションの比較コレクションの比較コレクションの比較コレクションの比較 ............................................................................................................................................. 5-17SQL 文での文での文での文での PL/SQL コレクションの使用コレクションの使用コレクションの使用コレクションの使用 ....................................................................................................... 5-18

    VARRAY の例 ............................................................................................................................................... 5-20

    SQL での個々のコレクション要素の操作 ................................................................................................ 5-22

    マルチレベル・コレクションの使用マルチレベル・コレクションの使用マルチレベル・コレクションの使用マルチレベル・コレクションの使用 ................................................................................................................. 5-25コレクション・メソッドの使用コレクション・メソッドの使用コレクション・メソッドの使用コレクション・メソッドの使用 ......................................................................................................................... 5-28

    コレクション要素の存在のチェック(EXISTS メソッド) ..................................................................... 5-28

    コレクション内の要素数のカウント(COUNT メソッド) ................................................................... 5-29

    コレクションの最大サイズのチェック(LIMIT メソッド) .................................................................. 5-29

    最初または最後のコレクション要素の検索(FIRST メソッドと LAST メソッド) ........................... 5-30

    コレクションの各要素のループ(PRIOR メソッドと NEXT メソッド) ............................................. 5-31

    コレクションのサイズの拡大(EXTEND メソッド) ............................................................................. 5-32

    コレクションのサイズの縮小(TRIM メソッド) ................................................................................... 5-33

    コレクション要素の削除(DELETE メソッド) ...................................................................................... 5-34

    コレクション・パラメータへのメソッドの適用 ..................................................................................... 5-35

    コレクション例外の回避コレクション例外の回避コレクション例外の回避コレクション例外の回避 ..................................................................................................................................... 5-36バルク・バインドを使用したコレクションのループ・オーバーヘッドの削減バルク・バインドを使用したコレクションのループ・オーバーヘッドの削減バルク・バインドを使用したコレクションのループ・オーバーヘッドの削減バルク・バインドを使用したコレクションのループ・オーバーヘッドの削減 ......................................... 5-38

    バルク・バインドによるパフォーマンスの向上 ..................................................................................... 5-39

  • v

    FORALL 文の使用文の使用文の使用文の使用 ............................................................................................................................................... 5-41FORALL がロールバックに与える影響 .................................................................................................... 5-42

    %BULK_ROWCOUNT 属性を持つ FORALL の反復による影響をうける行カウント ..................... 5-43

    %BULK_EXCEPTIONS 属性を持つ FORALL 例外の処理 .................................................................... 5-44

    BULK COLLECT 句を使用した、問合せ結果のコレクションへの取出し句を使用した、問合せ結果のコレクションへの取出し句を使用した、問合せ結果のコレクションへの取出し句を使用した、問合せ結果のコレクションへの取出し ................................................ 5-46カーソルからのバルク・フェッチの例 ..................................................................................................... 5-47

    LIMIT 句を使用したバルク・フェッチ操作の対象行の制限 ................................................................ 5-48

    RETURNING INTO 句を使用したコレクションへの DML 結果の取出し ......................................... 5-49

    BULK COLLECT の制限 ............................................................................................................................. 5-49

    FORALL と BULK COLLECT の併用 ....................................................................................................... 5-50

    バルク・バインドとホスト配列の併用 ..................................................................................................... 5-50

    レコードレコードレコードレコード ................................................................................................................................................................. 5-51レコードの定義と宣言レコードの定義と宣言レコードの定義と宣言レコードの定義と宣言 ......................................................................................................................................... 5-51

    レコードの宣言 ............................................................................................................................................. 5-53

    レコードの初期化 ......................................................................................................................................... 5-54

    レコードの参照 ............................................................................................................................................. 5-55

    NULL 値のレコードへの代入 .................................................................................................................... 5-57

    レコードの代入 ............................................................................................................................................. 5-57

    レコードの比較 ............................................................................................................................................. 5-59

    レコードの操作レコードの操作レコードの操作レコードの操作 ..................................................................................................................................................... 5-59PL/SQL レコードのデータベースへの挿入 ............................................................................................. 5-61

    PL/SQL レコード値を使用したデータベースの更新 ............................................................................. 5-62

    レコードの挿入 / 更新に関する制約 ........................................................................................................ 5-64

    レコードのコレクションへのデータの問合せ ......................................................................................... 5-65

    6 PL/SQL とととと Oracle の相互作用の相互作用の相互作用の相互作用PL/SQL におけるにおけるにおけるにおける SQL サポートの概要サポートの概要サポートの概要サポートの概要 ............................................................................................................. 6-2

    データ操作 ....................................................................................................................................................... 6-2

    トランザクション制御 ................................................................................................................................... 6-2

    SQL ファンクション ...................................................................................................................................... 6-3

    SQL 疑似列 ...................................................................................................................................................... 6-3

    SQL 演算子 ...................................................................................................................................................... 6-5

    カーソル管理カーソル管理カーソル管理カーソル管理 ........................................................................................................................................................... 6-6明示カーソルの概要 ....................................................................................................................................... 6-6

    暗黙カーソルの概要 ..................................................................................................................................... 6-11

  • vi

    パッケージでのカーソル仕様部と本体の分離パッケージでのカーソル仕様部と本体の分離パッケージでのカーソル仕様部と本体の分離パッケージでのカーソル仕様部と本体の分離 ................................................................................................. 6-12カーソルカーソルカーソルカーソル FOR ループの使用ループの使用ループの使用ループの使用 .............................................................................................................................. 6-13

    明示カーソルに対する副問合せの代用 ..................................................................................................... 6-14

    カーソル副問合せの使用 ............................................................................................................................. 6-14

    カーソル FOR ループ内の式の別名の定義 ............................................................................................... 6-14

    カーソル FOR ループへのパラメータの受渡し ....................................................................................... 6-15

    カーソル変数の使用カーソル変数の使用カーソル変数の使用カーソル変数の使用 ............................................................................................................................................. 6-16カーソル変数 ................................................................................................................................................. 6-16

    変数を使用する理由 ..................................................................................................................................... 6-17

    REF CURSOR 型の定義 ............................................................................................................................... 6-17

    カーソル変数の宣言 ..................................................................................................................................... 6-18

    カーソル変数の制御 ..................................................................................................................................... 6-19

    カーソル変数の例 : マスター表とディテール表 ...................................................................................... 6-24

    カーソル変数の例 : クライアント側の PL/SQL ブロック ..................................................................... 6-25

    カーソル変数の例 : Pro*C プログラム ...................................................................................................... 6-26

    カーソル変数の例 : SQL*Plus でのホスト変数の操作 ............................................................................ 6-28

    ホスト・カーソル変数を PL/SQL に渡すときのネットワークの通信量の削減 ................................ 6-29

    カーソル変数でのエラーの回避 ................................................................................................................. 6-30

    カーソル変数の制限 ..................................................................................................................................... 6-32

    カーソル属性の使用カーソル属性の使用カーソル属性の使用カーソル属性の使用 ............................................................................................................................................. 6-33明示カーソルの属性の概要 ......................................................................................................................... 6-33

    暗黙カーソルの属性の概要 ......................................................................................................................... 6-37

    カーソル式の使用カーソル式の使用カーソル式の使用カーソル式の使用 ................................................................................................................................................. 6-40カーソル式の制限 ......................................................................................................................................... 6-40

    カーソル式の例 ............................................................................................................................................. 6-41

    PL/SQL におけるトランザクション処理の概要におけるトランザクション処理の概要におけるトランザクション処理の概要におけるトランザクション処理の概要 ............................................................................................. 6-42トランザクションがデータベースを保護する方法 ................................................................................. 6-43

    COMMIT による変更の永続化 .................................................................................................................. 6-43

    ROLLBACK による変更の取消し .............................................................................................................. 6-44

    SAVEPOINT による変更の一部取消し .................................................................................................... 6-45

    Oracle による暗黙的なロールバックの実行方法 .................................................................................... 6-46

    トランザクションの終了 ............................................................................................................................. 6-47

    SET TRANSACTION を使用したトランザクション・プロパティの設定 .......................................... 6-47

    デフォルトのロックの上書き ..................................................................................................................... 6-48

  • vii

    自律型トランザクションによる独立した作業単位の実行自律型トランザクションによる独立した作業単位の実行自律型トランザクションによる独立した作業単位の実行自律型トランザクションによる独立した作業単位の実行 ............................................................................. 6-52自律型トランザクションの利点 ................................................................................................................. 6-53

    自律型トランザクションの定義 ................................................................................................................. 6-53

    自律型トランザクションの制御 ................................................................................................................. 6-57

    自律型トリガーの使用 ................................................................................................................................. 6-59

    SQL からの自律型ファンクションのコール ............................................................................................ 6-60

    PL/SQL プログラムの下位互換性の保証プログラムの下位互換性の保証プログラムの下位互換性の保証プログラムの下位互換性の保証 ......................................................................................................... 6-62

    7 PL/SQL エラーの処理エラーの処理エラーの処理エラーの処理PL/SQL のエラー処理の概要のエラー処理の概要のエラー処理の概要のエラー処理の概要 ............................................................................................................................... 7-2PL/SQL 例外の利点例外の利点例外の利点例外の利点 ............................................................................................................................................... 7-3事前定義の事前定義の事前定義の事前定義の PL/SQL 例外例外例外例外 ...................................................................................................................................... 7-4独自の独自の独自の独自の PL/SQL 例外の定義例外の定義例外の定義例外の定義 .................................................................................................................................. 7-7

    PL/SQL 例外の宣言 ....................................................................................................................................... 7-7

    PL/SQL 例外の有効範囲規則 ....................................................................................................................... 7-7

    PL/SQL 例外と番号の対応付け : EXCEPTION_INIT プラグマ ............................................................. 7-8

    独自のエラー・メッセージの定義 : プロシージャ RAISE_APPLICATION_ERROR ......................... 7-9

    事前定義の例外の再宣言 ............................................................................................................................. 7-10

    PL/SQL の例外の呼出しの例外の呼出しの例外の呼出しの例外の呼出し ..................................................................................................................................... 7-11RAISE 文を使用した例外の呼出し ............................................................................................................ 7-11

    PL/SQL 例外の伝播例外の伝播例外の伝播例外の伝播 ............................................................................................................................................. 7-12PL/SQL 例外の再呼出し例外の再呼出し例外の再呼出し例外の再呼出し ..................................................................................................................................... 7-15呼び出された呼び出された呼び出された呼び出された PL/SQL 例外の処理例外の処理例外の処理例外の処理 .................................................................................................................... 7-16

    宣言の中で呼び出された例外の処理 ......................................................................................................... 7-17

    ハンドラの中で呼び出された例外の処理 ................................................................................................. 7-17

    例外ハンドラへの分岐と例外ハンドラからの分岐 ................................................................................. 7-18

    エラー・コードとエラー・メッセージの取得 : SQLCODE および SQLERRM ................................. 7-18

    未処理例外の捕捉 ......................................................................................................................................... 7-20

    PL/SQL エラーの処理のヒントエラーの処理のヒントエラーの処理のヒントエラーの処理のヒント ......................................................................................................................... 7-20例外が呼び出された後に実行を続ける方法 ............................................................................................. 7-20

    トランザクションの再試行 ......................................................................................................................... 7-21

    ロケータ変数を使用した例外の位置の識別 ............................................................................................. 7-22

  • viii

    8 PL/SQL のサブプログラムのサブプログラムのサブプログラムのサブプログラムサブプログラムサブプログラムサブプログラムサブプログラム ....................................................................................................................................................... 8-2サブプログラムの利点サブプログラムの利点サブプログラムの利点サブプログラムの利点 ........................................................................................................................................... 8-3PL/SQL プロシージャプロシージャプロシージャプロシージャ ........................................................................................................................................... 8-4PL/SQL ファンクションファンクションファンクションファンクション ....................................................................................................................................... 8-6

    RETURN 文の使用 ......................................................................................................................................... 8-8

    PL/SQL サブプログラムの副作用の制御 ................................................................................................... 8-9

    PL/SQL のサブプログラムの宣言のサブプログラムの宣言のサブプログラムの宣言のサブプログラムの宣言 ..................................................................................................................... 8-10複数の複数の複数の複数の PL/SQL サブプログラムのパッケージ化サブプログラムのパッケージ化サブプログラムのパッケージ化サブプログラムのパッケージ化 ............................................................................................ 8-11サブプログラムの実パラメータと仮パラメータサブプログラムの実パラメータと仮パラメータサブプログラムの実パラメータと仮パラメータサブプログラムの実パラメータと仮パラメータ ............................................................................................. 8-12サブプログラムのパラメータの位置表記法と名前表記法サブプログラムのパラメータの位置表記法と名前表記法サブプログラムのパラメータの位置表記法と名前表記法サブプログラムのパラメータの位置表記法と名前表記法 ............................................................................. 8-13

    位置表記法の使用 ......................................................................................................................................... 8-13

    名前表記法の使用 ......................................................................................................................................... 8-13

    混合表記法の使用 ......................................................................................................................................... 8-13

    サブプログラムのパラメータのモードの指定サブプログラムのパラメータのモードの指定サブプログラムのパラメータのモードの指定サブプログラムのパラメータのモードの指定 ................................................................................................. 8-14IN モードの使用 ........................................................................................................................................... 8-14

    OUT モードの使用 ....................................................................................................................................... 8-15

    IN OUT モードの使用 ................................................................................................................................. 8-16

    サブプログラムのパラメータのモードの概要 ......................................................................................... 8-16

    NOCOPY コンパイラ・ヒントを使用した大型データ構造の受渡しコンパイラ・ヒントを使用した大型データ構造の受渡しコンパイラ・ヒントを使用した大型データ構造の受渡しコンパイラ・ヒントを使用した大型データ構造の受渡し .......................................................... 8-17NOCOPY の使用によるパフォーマンス向上のトレードオフ .............................................................. 8-18

    NOCOPY の制限 .......................................................................................................................................... 8-19

    サブプログラムのパラメータのデフォルト値の使用サブプログラムのパラメータのデフォルト値の使用サブプログラムのパラメータのデフォルト値の使用サブプログラムのパラメータのデフォルト値の使用 ..................................................................................... 8-19サブプログラムのパラメータのエイリアシングの理解サブプログラムのパラメータのエイリアシングの理解サブプログラムのパラメータのエイリアシングの理解サブプログラムのパラメータのエイリアシングの理解 ................................................................................. 8-21サブプログラム名のオーバーロードサブプログラム名のオーバーロードサブプログラム名のオーバーロードサブプログラム名のオーバーロード ................................................................................................................. 8-23

    オーバーロードの制限 ................................................................................................................................. 8-24

    サブプログラムのコールの解決方法サブプログラムのコールの解決方法サブプログラムのコールの解決方法サブプログラムのコールの解決方法 ................................................................................................................. 8-25オーバーロードと継承の相互作用 ............................................................................................................. 8-28

    表関数を使用した複数行の受入れと戻し表関数を使用した複数行の受入れと戻し表関数を使用した複数行の受入れと戻し表関数を使用した複数行の受入れと戻し ....................................................................................................... 8-30表関数の概要 ................................................................................................................................................. 8-30

    表関数 ............................................................................................................................................................. 8-32

    パイプライン表関数 ..................................................................................................................................... 8-34

    変換へのパイプライン表関数の使用 ......................................................................................................... 8-35

    パイプライン表関数の記述 ......................................................................................................................... 8-36

    表関数からの結果の戻し ............................................................................................................................. 8-37

    PL/SQL 表関数間のデータのパイプライン ............................................................................................. 8-38

  • ix

    表関数の問合せ ............................................................................................................................................. 8-38

    表関数に対する複数コールの最適化 ......................................................................................................... 8-39

    カーソル変数によるデータの受渡し ......................................................................................................... 8-40

    表関数内での DML 操作の実行 ................................................................................................................. 8-42

    表関数への DML 操作の実行 ..................................................................................................................... 8-43

    表関数の例外処理 ......................................................................................................................................... 8-43

    表関数のパラレル化表関数のパラレル化表関数のパラレル化表関数のパラレル化 ............................................................................................................................................. 8-44表関数のパラレル実行 ................................................................................................................................. 8-44

    入力データのパーティション化 ................................................................................................................. 8-45

    リーフ・レベル表関数のパラレル実行 ..................................................................................................... 8-47

    表関数による入力データのストリーム表関数による入力データのストリーム表関数による入力データのストリーム表関数による入力データのストリーム ............................................................................................................. 8-48パラレル実行のためのパーティション化またはクラスタ化の選択 ..................................................... 8-49

    実行者権限と定義者権限実行者権限と定義者権限実行者権限と定義者権限実行者権限と定義者権限 ..................................................................................................................................... 8-50実行者権限の利点 ......................................................................................................................................... 8-51

    AUTHID 句によるサブプログラムの権限の指定 ................................................................................... 8-52

    サブプログラム実行中の現行ユーザー ..................................................................................................... 8-53

    実行者権限サブプログラムでの外部参照の解決 ..................................................................................... 8-53

    実行者権限サブプログラムでのデフォルトの名前解決のオーバーライド ......................................... 8-55

    実行者権限サブプログラムに対する権限の付与 ..................................................................................... 8-56

    実行者権限サブプログラムでのロールの使用 ......................................................................................... 8-57

    実行者権限サブプログラムでのビューおよびデータベース・トリガーの使用 ................................. 8-57

    実行者権限サブプログラムでのデータベース・リンクの使用 ............................................................. 8-58

    実行者権限サブプログラムでのオブジェクト型の使用 ......................................................................... 8-58

    再帰の理解と使用再帰の理解と使用再帰の理解と使用再帰の理解と使用 ................................................................................................................................................. 8-60再帰的サブプログラム ................................................................................................................................. 8-60

    相互再帰の使用 ............................................................................................................................................. 8-63

    再帰と反復 ..................................................................................................................................................... 8-64

    外部サブプログラムのコール外部サブプログラムのコール外部サブプログラムのコール外部サブプログラムのコール ............................................................................................................................. 8-65PL/SQL Server Pages((((PSP)を使用した動的)を使用した動的)を使用した動的)を使用した動的 Web ページの作成ページの作成ページの作成ページの作成 ............................................................. 8-66

  • x

    9 PL/SQL パッケージパッケージパッケージパッケージPL/SQL パッケージパッケージパッケージパッケージ ............................................................................................................................................... 9-2

    PL/SQL パッケージの例 ............................................................................................................................... 9-4

    PL/SQL パッケージの利点パッケージの利点パッケージの利点パッケージの利点 ................................................................................................................................... 9-5パッケージ仕様部の理解パッケージ仕様部の理解パッケージ仕様部の理解パッケージ仕様部の理解 ....................................................................................................................................... 9-6

    パッケージの内容の参照 ............................................................................................................................... 9-7

    パッケージ本体の理解パッケージ本体の理解パッケージ本体の理解パッケージ本体の理解 ........................................................................................................................................... 9-8パッケージ機能の例パッケージ機能の例パッケージ機能の例パッケージ機能の例 ............................................................................................................................................... 9-9パッケージのプライベート項目とパブリック項目パッケージのプライベート項目とパブリック項目パッケージのプライベート項目とパブリック項目パッケージのプライベート項目とパブリック項目 ......................................................................................... 9-14パッケージ・サブプログラムのオーバーロードパッケージ・サブプログラムのオーバーロードパッケージ・サブプログラムのオーバーロードパッケージ・サブプログラムのオーバーロード ............................................................................................. 9-15パッケージパッケージパッケージパッケージ STANDARD によるによるによるによる PL/SQL 環境の定義環境の定義環境の定義環境の定義 ................................................................................... 9-16製品固有のパッケージの概要製品固有のパッケージの概要製品固有のパッケージの概要製品固有のパッケージの概要 ............................................................................................................................. 9-17

    DBMS_ALERT パッケージ ......................................................................................................................... 9-17

    DBMS_OUTPUT パッケージ ...................................................................................................................... 9-17

    DBMS_PIPE パッケージ .............................................................................................................................. 9-18

    UTL_FILE パッケージ ................................................................................................................................. 9-18

    UTL_HTTP パッケージ ............................................................................................................................... 9-18

    パッケージ作成のガイドラインパッケージ作成のガイドラインパッケージ作成のガイドラインパッケージ作成のガイドライン ......................................................................................................................... 9-19

    10 PL/SQL のオブジェクト型のオブジェクト型のオブジェクト型のオブジェクト型抽象化の役割抽象化の役割抽象化の役割抽象化の役割 ......................................................................................................................................................... 10-2オブジェクト型オブジェクト型オブジェクト型オブジェクト型 ..................................................................................................................................................... 10-3オブジェクト型を使用する理由オブジェクト型を使用する理由オブジェクト型を使用する理由オブジェクト型を使用する理由 ......................................................................................................................... 10-5オブジェクト型の構造オブジェクト型の構造オブジェクト型の構造オブジェクト型の構造 ......................................................................................................................................... 10-5オブジェクト型の構成要素オブジェクト型の構成要素オブジェクト型の構成要素オブジェクト型の構成要素 ................................................................................................................................. 10-7

    属性 ................................................................................................................................................................. 10-7

    メソッド ......................................................................................................................................................... 10-8

    既存のオブジェクト型の属性およびメソッドの変更(型の発展) ..................................................... 10-12

    オブジェクト型の定義オブジェクト型の定義オブジェクト型の定義オブジェクト型の定義 ....................................................................................................................................... 10-13PL/SQL の型の継承の概要 ....................................................................................................................... 10-14

    オブジェクト型の例 : Stack ...................................................................................................................... 10-16

    オブジェクト型の例 : Ticket_Booth ........................................................................................................ 10-18

    オブジェクト型の例 : Bank_Account ...................................................................................................... 10-20

    オブジェクト型の例 : Rational Numbers(有理数) ............................................................................. 10-22

  • xi

    オブジェクトの宣言と初期化オブジェクトの宣言と初期化オブジェクトの宣言と初期化オブジェクトの宣言と初期化 ........................................................................................................................... 10-24オブジェクトの宣言 ................................................................................................................................... 10-24

    オブジェクトの初期化 ............................................................................................................................... 10-25

    PL/SQL による未初期化オブジェクトの処理 ....................................................................................... 10-26

    属性へのアクセス属性へのアクセス属性へのアクセス属性へのアクセス ............................................................................................................................................... 10-27コンストラクタの定義コンストラクタの定義コンストラクタの定義コンストラクタの定義 ....................................................................................................................................... 10-28コンストラクタのコールコンストラクタのコールコンストラクタのコールコンストラクタのコール ................................................................................................................................... 10-29メソッドのコールメソッドのコールメソッドのコールメソッドのコール ............................................................................................................................................... 10-30REF 修飾子によるオブジェクトの共有修飾子によるオブジェクトの共有修飾子によるオブジェクトの共有修飾子によるオブジェクトの共有 .......................................................................................................... 10-31

    先送り型定義 ............................................................................................................................................... 10-32

    オブジェクトの操作オブジェクトの操作オブジェクトの操作オブジェクトの操作 ........................................................................................................................................... 10-33オブジェクトの選択 ................................................................................................................................... 10-34

    オブジェクトの挿入 ................................................................................................................................... 10-38

    オブジェクトの更新 ................................................................................................................................... 10-39

    オブジェクトの削除 ................................................................................................................................... 10-39

    11 システム固有の動的システム固有の動的システム固有の動的システム固有の動的 SQL動的動的動的動的 SQL ................................................................................................................................................................ 11-2動的動的動的動的 SQL の必要性の必要性の必要性の必要性 ............................................................................................................................................... 11-2EXECUTE IMMEDIATE 文の使用文の使用文の使用文の使用 ................................................................................................................... 11-3

    動的 SQL の例 ............................................................................................................................................... 11-4

    USING 句の下位互換性 ............................................................................................................................... 11-5

    パラメータのモードの指定 ......................................................................................................................... 11-6

    OPEN-FOR、、、、FETCH およびおよびおよびおよび CLOSE 文の使用文の使用文の使用文の使用 ............................................................................................. 11-7カーソル変数のオープン ............................................................................................................................. 11-7

    カーソル変数からのフェッチ ..................................................................................................................... 11-8

    カーソル変数のクローズ ............................................................................................................................. 11-8

    レコード、オブジェクトおよびコレクションの動的 SQL の例 ........................................................... 11-9

    バルク動的バルク動的バルク動的バルク動的 SQL の使用の使用の使用の使用 ..................................................................................................................................... 11-11バルク動的バインドの構文 ....................................................................................................................... 11-11

    バルク動的バインドの例 ........................................................................................................................... 11-12

    動的動的動的動的 SQL 活用時のヒントと注意点活用時のヒントと注意点活用時のヒントと注意点活用時のヒントと注意点 ................................................................................................................ 11-14パフォーマンスの向上 ............................................................................................................................... 11-14

    任意の名前を持つスキーマ・オブジェクトをプロシージャで処理する方法 ................................... 11-14

    重複するプレースホルダの使用 ............................................................................................................... 11-15

    カーソル属性の使用 ................................................................................................................................... 11-16

  • xii

    NULL を渡す方法 ...................................................................................................................................... 11-16

    リモート操作の実行 ................................................................................................................................... 11-17

    実行者権限の使用 ....................................................................................................................................... 11-18

    RESTRICT_REFERENCES プラグマの使用 ........................................................................................... 11-18

    デッドロックの回避 ................................................................................................................................... 11-19

    12 PL/SQL アプリケーションのチューニングアプリケーションのチューニングアプリケーションのチューニングアプリケーションのチューニングPL/SQL のパフォーマンス問題の原因のパフォーマンス問題の原因のパフォーマンス問題の原因のパフォーマンス問題の原因 ............................................................................................................. 12-2PL/SQL のパフォーマンス問題の識別のパフォーマンス問題の識別のパフォーマンス問題の識別のパフォーマンス問題の識別 ............................................................................................................. 12-8

    プロファイラ API: パッケージ DBMS_PROFILER ................................................................................. 12-8

    トレース API: パッケージ DBMS_TRACE ............................................................................................... 12-9

    PL/SQL のパフォーマンス・チューニング機能のパフォーマンス・チューニング機能のパフォーマンス・チューニング機能のパフォーマンス・チューニング機能 ........................................................................................... 12-10システム固有の動的 SQL を使用した PL/SQL パフォーマンスのチューニング ............................ 12-10

    バルク・バインドを使用した PL/SQL パフォーマンスのチューニング .......................................... 12-11

    NOCOPY コンパイラ・ヒントを使用した PL/SQL パフォーマンスのチューニング ................... 12-12

    RETURNING 句を使用した PL/SQL パフォーマンスのチューニング ............................................ 12-12

    外部ルーチンを使用した PL/SQL パフォーマンスのチューニング .................................................. 12-13

    オブジェクト型とコレクションを使用した PL/SQL パフォーマンスの改善 .................................. 12-13

    システム固有の実行のための PL/SQL コードのコンパイル .............................................................. 12-14

    13 PL/SQL の言語要素の言語要素の言語要素の言語要素代入文代入文代入文代入文 ..................................................................................................................................................................... 13-3AUTONOMOUS_TRANSACTION プラグマプラグマプラグマプラグマ ............................................................................................... 13-7ブロックブロックブロックブロック ............................................................................................................................................................... 13-10CASE 文文文文 ............................................................................................................................................................... 13-17CLOSE 文文文文 ............................................................................................................................................................ 13-20コレクション・メソッドコレクション・メソッドコレクション・メソッドコレクション・メソッド ................................................................................................................................... 13-22コレクションコレクションコレクションコレクション ....................................................................................................................................................... 13-27コメントコメントコメントコメント ............................................................................................................................................................... 13-33COMMIT 文文文文 ....................................................................................................................................................... 13-34定数と変数定数と変数定数と変数定数と変数 ........................................................................................................................................................... 13-36カーソル属性カーソル属性カーソル属性カーソル属性 ....................................................................................................................................................... 13-40カーソル変数カーソル変数カーソル変数カーソル変数 ....................................................................................................................................................... 13-45カーソルカーソルカーソルカーソル ............................................................................................................................................................... 13-51DELETE 文文文文 .......................................................................................................................................................... 13-55EXCEPTION_INIT プラグマプラグマプラグマプラグマ ........................................................................................................................... 13-58

  • xiii

    例外例外例外例外 ....................................................................................................................................................................... 13-60EXECUTE IMMEDIATE 文文文文 ............................................................................................................................. 13-63EXIT 文文文文 ................................................................................................................................................................ 13-67式式式式 ........................................................................................................................................................................... 13-69FETCH 文文文文 ............................................................................................................................................................ 13-79FORALL 文文文文 ......................................................................................................................................................... 13-84ファンクションファンクションファンクションファンクション ................................................................................................................................................... 13-88GOTO 文文文文 ............................................................................................................................................................. 13-94IF 文文文文 ...................................................................................................................................................................... 13-96INSERT 文文文文 ........................................................................................................................................................... 13-99リテラルリテラルリテラルリテラル ............................................................................................................................................................ 13-102LOCK TABLE 文文文文 ............................................................................................................................................. 13-105LOOP 文文文文 ........................................................................................................................................................... 13-107MERGE 文文文文 ........................................................................................................................................................ 13-113NULL 文文文文 ........................................................................................................................................................... 13-115オブジェクト型オブジェクト型オブジェクト型オブジェクト型 ................................................................................................................................................ 13-116OPEN 文文文文 ........................................................................................................................................................... 13-125OPEN-FOR 文文文文 ................................................................................................................................................. 13-128OPEN-FOR-USING 文文文文 .................................................................................................................................. 13-131パッケージパッケージパッケージパッケージ ........................................................................................................................................................ 13-134プロシージャプロシージャプロシージャプロシージャ .................................................................................................................................................... 13-140RAISE 文文文文 .......................................................................................................................................................... 13-146レコードレコードレコードレコード ............................................................................................................................................................ 13-148RESTRICT_REFERENCES プラグマプラグマプラグマプラグマ .......................................................................................................... 13-153RETURN 文文文文 ..................................................................................................................................................... 13-156ROLLBACK 文文文文 ................................................................................................................................................ 13-158%ROWTYPE 属性属性属性属性 ........................................................................................................................................... 13-160SAVEPOINT 文文文文 ............................................................................................................................................... 13-162SELECT INTO 文文文文 ............................................................................................................................................ 13-163SERIALLY_REUSABLE プラグマプラグマプラグマプラグマ ................................................................................................................ 13-167SET TRANSACTION 文文文文 ............................................................................................................................... 13-169SQL カーソルカーソルカーソルカーソル ................................................................................................................................................... 13-171SQLCODE ファンクションファンクションファンクションファンクション ........................................................................................................................... 13-174SQLERRM ファンクションファンクションファンクションファンクション .......................................................................................................................... 13-176%TYPE 属性属性属性属性 ..................................................................................................................................................... 13-178UPDATE 文文文文 ...................................................................................................................................................... 13-180

  • xiv

    A PL/SQL のサンプル・プログラムのサンプル・プログラムのサンプル・プログラムのサンプル・プログラムプログラムの実行プログラムの実行プログラムの実行プログラムの実行 ................................................................................................................................................... A-2サンプルサンプルサンプルサンプル 1. FOR ループループループループ ........................................................................................................................................ A-3

    入力表 ............................................................................................................................................................... A-3

    PL/SQL ブロック ........................................................................................................................................... A-3

    出力表 ............................................................................................................................................................... A-4

    サンプルサンプルサンプルサンプル 2. カーソルカーソルカーソルカーソル .............................................................................................................................................. A-5入力表 ............................................................................................................................................................... A-5

    PL/SQL ブロック ........................................................................................................................................... A-5

    出力表 ............................................................................................................................................................... A-6

    サンプルサンプルサンプルサンプル 3. 有効範囲有効範囲有効範囲有効範囲 .............................................................................................................................................. A-7入力表 ............................................................................................................................................................... A-7

    PL/SQL ブロック ........................................................................................................................................... A-7

    出力表 ............................................................................................................................................................... A-8

    サンプルサンプルサンプルサンプル 4. バッチ・トランザクション処理バッチ・トランザクション処理バッチ・トランザクション処理バッチ・トランザクション処理 ...................................................................................................... A-9入力表 ............................................................................................................................................................... A-9

    PL/SQL ブロック ........................................................................................................................................ A-10

    出力表 ............................................................................................................................................................ A-12

    サンプルサンプルサンプルサンプル 5. 埋込み埋込み埋込み埋込み PL/SQL ............................................................................................................................... A-13入力表 ............................................................................................................................................................ A-13

    C プログラム中の PL/SQL ブロック ..................