目次

T. PL/SQLのプログラミング 

1章 PL/SQL入門
      1.1 PL/SQLとは
      1.2 Oracleアプリケーションのプログラミング・コンセプト
      1.3 PL/SQLの生い立ち
          1.3.1 PL/SQLで改善されたアプリケーション移植性
          1.3.2 PL/SQLで改善された実行権限とトランザクションの完全性
      1.4 PL/SQLの各バージョンについて
          1.4.1 複数のバージョンのPL/SQLを使用する場合
          1.4.2 さまざまなバージョンのPL/SQLの本書での扱い
          1.4.3 PL/SQLバージョン2.0
          1.4.4 PL/SQLリリース2.1
          1.4.5 PL/SQLリリース2.2
          1.4.6 PL/SQLリリース2.3
          1.4.7 PL/SQLリリース1.1
      1.5 Oracle プログラマへのアドバイス
          1.5.1 創造的な、過激ともいえるアプローチを取れ
          1.5.2 新しい習慣を身に付けよう
          1.5.3 PL/SQLには求めるものがあるものと思え
          1.5.4 アイデアを共有しよう
      1.6 PL/SQLの魅力
      
2章 PL/SQL言語の基礎
      2.1 PL/SQL文字セット
      2.2 識別子
          2.2.1 予約語
          2.2.2 空白文字とキーワード
      2.3 定数
          2.3.1 文字列に埋め込まれた1重引用符
          2.3.2 数値定数
          2.3.3 Boolean定数
      2.4 セミコロン・デリミタ
      2.5 コメント
          2.5.1 1行コメント構文
          2.5.2 複数行コメントの構文
      2.6 PRAGMAキーワード
      2.7 ブロック構造
          2.7.1 PL/SQLブロックセクション
          2.7.2 ブロックの有効範囲
          2.7.3 ネストしたブロック

3章 効果的なコーディング・スタイル
      3.1 効果的なレイアウトの基礎
      3.2 SQL文の整形
      3.3 制御構造の整形
          3.3.1 IF文の整形
          3.3.2 ループの整形
          3.3.3 例外ハンドラの整形
      3.4 PL/SQLブロックの整形
      3.5 パッケージの整形
      3.6 コメントの効果的な使用
          3.6.1 コードを書きながらコメントする
          3.6.2 プログラムの方法ではなく理由を説明する
          3.6.3 コメントが簡単に入力でき、メンテナンスできるようにする
          3.6.4 インデントのメンテナンス
          3.6.5 モジュール・レベルでのコメント
          3.6.6 宣言文のコメント
      3.7 パッケージ全体のドキュメント化
          3.7.1 パッケージ仕様のコメント
          3.7.2 パッケージ本体のコメント
          
          
U.PL/SQLの基本要素

4章 変数とプログラム・データ
      4.1 変数名
          4.1.1 正しい変数名の付け方
          4.1.2 意味の分かる名前にする
      4.2 変数のデータ型
          4.2.1 数値データ型
          4.2.2 数値サブタイプ
          4.2.3 文字データ型
          4.2.4 Booleanデータ型
          4.2.5 Date-timeデータ型
          4.2.6 データ型の変換
      4.3 PL/SQLのNULL値
          4.3.1 比較文でのNULL値
          4.3.2 NULL値のチェック
          4.3.3 NULLを引数に指定したときの関数の戻り値
      4.4 変数の宣言
          4.4.1 制約付き宣言
          4.4.2 宣言例
          4.4.3 デフォルト値
          4.4.4 NOT NULL句
      4.5 アンカー付き宣言
          4.5.1 アンカー付き宣言の利点
          4.5.2 コンパイル時のアンカリング
          4.5.3 %TYPE属性のネスト化
          4.5.4 別のPL/SQLブロックにある変数のデータ型を付与する
          4.5.5 NOT NULLデータ型を付与する
      4.6 プログラマ定義のサブタイプ
          4.6.1 サブタイプの宣言
          4.6.2 サブタイプ宣言の例
          4.6.3 制約付きサブタイプのエミュレート
      4.7  変数の定義と使用に関するヒント
          4.7.1 変数の命名規則を明確にする
          4.7.2 サブタイプにコードがわかりやすくなる名前を付ける
          4.7.3 変数の再利用を避ける
          4.7.4 名前付き定数を使用して直値のハードコーディングを避ける
          4.7.5 変数を名前付き定数に変換する
          4.7.6 プログラムから未使用の変数を除去する
          4.7.7 変数がデータベース列をあらわす場合は%TYPEを使用する
          4.7.8 %TYPE属性を使用してデータベース以外の宣言を標準化する
          4.7.9 変数を使用して複雑なロジックを隠蔽する
          
5章 条件制御と順次制御
      5.1 条件制御文
          5.1.1 IF-THEN形式
          5.1.2 IF-THEN-ELSE形式
          5.1.3 IF-ELSIF形式
          5.1.4 ネストされたIF文
      5.2 順次制御文
          5.2.1 GOTO文
          5.2.2 NULL文
          
6章 カーソル
      6.1 カーソルの基本
          6.1.1 カーソル操作
          6.1.2 定義
      6.2 暗黙カーソルと明示的カーソル
          6.2.1 暗黙カーソル
          6.2.2 暗黙カーソルの欠点
          6.2.3 明示的カーソル
      6.3 カーソルの宣言
          6.3.1 カーソル名
          6.3.2 カーソル内のPL/SQL変換
          6.3.3 識別子の優先順位
          6.3.4 カーソルRETURN句
      6.4 カーソルオープン
      6.5 カーソルからの取り出し
          6.5.1 列リストとINTO句を一致させる
          6.5.2 最後の行を通過した後の取り出し
      6.6 カーソルの列別名
      6.7 カーソルのクローズ
          6.7.1 カーソルの最大数
          6.7.2 ローカルのカーソルをクローズする
      6.8 カーソル属性
          6.8.1 %FOUND属性
          6.8.2 %NOTFOUND属性
          6.8.3 %ROWCOUNT属性
          6.8.4 %ISOPEN属性
          6.8.5 暗黙のSQLカーソルの属性
          6.8.6 暗黙カーソルの属性と明示的カーソルの属性の違い
      6.9 カーソル・パラメータ
          6.9.1 パラメータが指定されたカーソルをオープンする
          6.9.2 カーソル・パラメータの有効範囲
          6.9.3 カーソル・パラメータのモード
          6.9.4 パラメータのデフォルト値
     6.10 カーソル内のSELECT FOR UPDATE文
          6.10.1 必要な場合だけロックする
          6.10.2 COMMITを発行してロックを解放する
          6.10.3 WHERE CURRENT OF句
     6.11 カーソル変換
          6.11.1 カーソル変数の機能
          6.11.2 静的カーソルとの類似点
          6.11.3 REF CURSOR型とカーソル変数の宣言
          6.11.4 カーソル変数をオープンする
          6.11.5 カーソル変数からの取り出し
          6.11.6 カーソル変数の規則
          6.11.7 カーソル変数を引数として渡す
     6.12 カーソルを使用する
          6.12.1 カーソルによる外部キー入力の妥当性検査
          6.12.2 SELECT FOR UPDATE構文で作業待ち行列を管理する
          
7章 ループ
      7.1 ループの基本
          7.1.1 異なるループの例
          7.1.2 ループの構造
      7.2 単純ループ
          7.2.1 単純ループの終了:EXITとEXIT WHEN
          7.2.2 REPEAT UNTILループのエミュレート
      7.3 数値FORループ
          7.3.1 数値FORループの規則
          7.3.2 数値FORループの使用例
          7.3.3 1以外のループ索引増分値
      7.4 カーソルFORループ
          7.4.1 カーソルFORループの使用例
          7.4.2 カーソルFORループのレコード
          7.4.3 カーソルFORループを使用する場合
      7.5 WHILEループ
          7.5.1 無限WHILE
      7.6 ループの実行管理
          7.6.1 ループ・ラベル
          7.6.2 ループの有効範囲
      7.7 PL/SQLのループに関するヒント
          7.7.1 ループ索引の命名法
          7.7.2 正しいループの抜け方
          7.7.3 不用意にループを使わない
          7.7.4 PL/SQLのループとSQL処理

8章 例外ハンドラ
      8.1 例外処理の必要性 
      8.2 例外部
      8.3 例外の種類
          8.3.1 名前付きシステム例外
          8.3.2 名前付きのプログラマ定義例外
          8.3.3 名前のないシステム例外
          8.3.4 名前のないプログラム定義例外
      8.4 例外処理動作の決定
          8.4.1 例外の有効範囲
          8.4.2 例外の伝播
      8.5 例外の発生
          8.5.1 例外を発生させるのは誰か
          8.5.2 宣言時に発生する例外
          8.5.3 例外ハンドラで発生した例外
      8.6 例外の処理
          8.6.1 複数の例外を1つのハンドラで処理する
          8.6.2 未処理の例外
          8.6.3 WHEN OTHERS句でSQLCODEとSQLERRMを使用する
          8.6.4 例外を無視して処理を継続する
      8.7 クライアント/サーバ間のエラー伝達
      8.8 NO_DATA_FOUND:多目的例外
      8.9 IF文としての例外ハンドラ
     8.10 RAISE文の間違った使用法

9章 PL/SQLレコード
      9.1 レコードの基礎
          9.1.1 異なるタイプのレコード
          9.1.1 レコードベースのデータを参照する
          9.1.3 レコードの利点
          9.1.4 レコード使用上の指針
          9.1.5 レコードとそのフィールドを参照する
          9.1.6 2つのレコードを比較する
      9.2 表に基づくレコード
          9.2.1 %ROWTYPE属性を使用してレコードを宣言する
      9.3 カーソルに基づくレコード
          9.3.1 カーソル・レコードに使用する列の選択
          9.3.2 レコードの列名を設定する
      9.4 プログラマ定義のレコード
          9.4.1 プログラマ定義のレコードを宣言する
          9.4.2 レコードの宣言
          9.4.3 プログラマ定義レコードの宣言例
      9.5 レコードへ(から)の値の代入
          9.5.1 フィールドへの直接代入
          9.5.2 暗黙カーソルのSELECT INTO文での設定
          9.5.3 明示カーソルからFETCH INTO文で取り出す
          9.5.4 集約代入
      9.6 レコード型とレコード互換
          9.6.1 代入に関する制限
          9.6.2 レコードの初期化
      9.7 ネストされたレコード
          9.7.1 ネストされたレコードの例
          9.7.2 ネストされたレコードのドット表記法
          9.7.3 ネストされたレコードの集約代入
          9.7.4 ネストされたレコードを使用してプログラム内データを非正規化する
       
10章 PL/SQL表の特徴
       10.1 PL/SQL表の特徴
       10.2 PL/SQL表とDML文
       10.3 PL/SQL表の宣言
            10.3.1 表TYPE(型)の定義
            10.3.2 PL/SQL表の宣言
       10.4 PL/SQL表の行の参照と変更
            10.4.1 行番号式の自動変換
            10.4.2 未定義の行を参照する
            10.4.3 PL/SQL表のランダムな使用法
            10.4.4 PL/SQL表をパラメータとして渡す
       10.5 PL/SQL表の行への値の代入
            10.5.1 直接代入
            10.5.2 反復型代入
            10.5.3 集約代入
       10.6 PL/SQL表の削除
       10.7 PL/SQLリリース2.3でのPL/SQL表の改良点
            10.7.1 PL/SQLレコード表
            10.7.2 新しく追加されたPL/SQL表の仕組み機能
       10.8 PL/SQL表の使用法
            10.8.1 データベース情報をPL/SQL表に転送する
            10.8.2 データに基づく行番号
            10.8.3 PL/SQL表を表示する
            10.8.4 PL/SQL表を使って伝統的な配列を作成する
            10.8.5 PL/SQL表を使って外部キーの検索を最適化する
            
            
V. 組み込み関数
      
11章 文字関数の説明
       11.1 文字関数の説明
       11.2 文字関数の例
            11.2.1 名前の構文解析
            11.2.2 長いテキストに対するワード・ラップ操作
            11.2.3 行に合わせてテキストを流し込む
            11.2.4 文字列内におけるサブ文字列の出現数カウント
            11.2.5 TRANSLATEによる文字列フォーマットの確認

12章 日付関数
       12.1 日付関数の説明
       12.2 日付関数の例
            12.2.1 ADD_MONTHSの動作のカスタマイズ
            12.2.2 クライアント/サーバ環境におけるNEW_TIMEの使用法
            
13章 数値関数とその他の関数
       13.1 数値関数の説明
       13.2 その他の関数の説明
       
14章 変換関数
       14.1 変換書式
            14.1.1 日付書式のモデル
            14.1.2 数値の書式モデル
       14.2 変換関数の説明
       14.3 変換関数の例
            14.3.1 FM:空白とゼロの抑止
            14.3.2 FX:書式の厳密な比較
            14.3.3 RR:千年期の変更
            14.3.4 TO_CHARによる日付範囲の作成
            14.3.5 日付マネージャの作成
            

付録A PL/SQLバージョン1.1からのストアド・プロシージャの呼び出し
       A.1 スタブを使用してバージョン2とやり取りする
       A.2 ストアド・プロシージャを呼び出すときの制限
           A.2.1 PL/SQLバージョン2のデータ型を使用できない
           A.2.2 ストアド・パッケージ変数を直接参照できない
           A.2.3 リモート・プロシージャ・コールを直接実行できない
           A.2.4 デフォルトのパラメータ値が使えない
           
付録B Oracleの各国語対応(監訳者補足)
       B.1 Oracleの各国語対応
       B.2 初期化パラメータ(init.ora)
       B.3 NLS_LANGパラメータの設定
       B.4 NLSパラメータの確認方法
       B.5 文字列の長さの単位
       B.6 マルチバイト文字列用の関数
       B.7 その他の注意点
           B.7.1 日本語オブジェクト名
           B.7.2 外字、半角カナ

付録C FTPで入手可能なファイルの内容
索引