Oracle PL/SQLプログラミング 基礎編 第2版

[cover photo]
TOPICS
Programming , Database
発行年月日
PRINT LENGTH
672
ISBN
4-87311-056-4
原書
Oracle PL/SQL Programming, 2nd Edition
FORMAT
Print
6,380円
この商品は品切れ再入荷未定です

Oracle社のPL/SQL言語について細部にわたって広範囲にカバーする、『オラクルPL/SQLプログラミング 基礎編』の改訂版です。基礎編では、PL/SQLのプログラミング方法、変数、レコードやテーブル、組み込み関数、モジュール化などの基本的な機能やトピックについて詳細に解説しています。姉妹書である、『オラクルPL/SQLプログラミング 応用編 第2版』とあわせて通読すれば、より深い知識とプログラミングテクニックを修得することができます

目次

I部 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バージョン8.0
                1.4.8 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の魅力
        1.7 PL/SQLについて身に付けるべき習慣
                1.7.1 できるだけコードを記述しないこと
                1.7.2 プログラムとデータ構造を同期させること
                1.7.3 すべての開発はパッケージを中心に進めること
                1.7.4 PL/SQL開発環境の標準化
                1.7.5 構造化されたコードとその他のよい習慣

2章 PL/SQL言語の基礎
        2.1 PL/SQL文字セット
        2.2 識別子
                2.2.1 予約語
                2.2.2 空白文字とキーワード
        2.3 定数
                2.3.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.1.1 インデントを使用して論理的構造を明確にする
                3.1.2 可読性を高めるために文字の大小を区別する
                3.1.3 大文字と小文字のスタイル
                3.1.4 単文のフォーマット
                3.1.5 宣言部の整形
                3.1.6 複数行にわたる文の整形
        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.7 パッケージ全体のドキュメント化
                3.7.1 パッケージ仕様のドキュメント
                3.7.2 パッケージ本体のドキュメント


II部 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 日付-時刻データ型
                4.2.6 NLS文字データ型
                4.2.7 LOBデータ型
                4.2.8 データ型の変換
        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 属性を使用してデータベース以外の宣言を標準化する
                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 COMMIT文
                6.1.2 ROLLBACK文
                6.1.3 SAVEPOINT文
                6.1.4 SET TRANSACTION文
                6.1.5 LOCK TABLE文
        6.2 PL/SQLのカーソル
                6.2.1 カーソルの型
                6.2.2 カーソル操作
        6.3 暗黙カーソルと明示的カーソル
                6.3.1 暗黙カーソル
                6.3.2 暗黙カーソルの欠点
                6.3.3 明示的カーソル
        6.4 カーソルの宣言
                6.4.1 カーソル名
                6.4.2 カーソル内のPL/SQL変数
                6.4.3 識別子の優先順位
                6.4.4 カーソルRETURN句
        6.5 カーソルのオープン
        6.6 カーソルからの取り出し
                6.6.1 列リストとINTO句を一致させる
                6.6.2 最後の行を通過した後の取り出し
        6.7 カーソルの列別名
        6.8 カーソルのクローズ
                6.8.1 カーソルの最大数
                6.8.2 ローカルのカーソルをクローズする
        6.9 カーソル属性
                6.9.1 %FOUND属性
                6.9.2 %NOTFOUND属性
                6.9.3 %ROWCOUNT属性
                6.9.4 %ISOPEN属性
                6.9.5 暗黙のSQLカーソルの属性
                6.9.6 暗黙カーソルの属性と明示的カーソルの属性の違い
        6.10 カーソルパラメータ
                6.10.1 パラメータを使用してカーソルを汎用化する
                6.10.2 パラメータが指定されたカーソルをオープンする
                6.10.3 カーソルパラメータの有効範囲
                6.10.4 カーソルパラメータのモード
                6.10.5 パラメータのデフォルト値
        6.11 カーソル内のSELECT FOR UPDATE文
                6.11.1 COMMITを発行してロックを解放する
                6.11.2 WHERE CURRENT OF句
        6.12 カーソル変数
                6.12.1 カーソル変数の機能
                6.12.2 静的カーソルとの類似点
                6.12.3 REF CURSOR型とカーソル変数の宣言
                6.12.4 カーソル変数をオープンする
                6.12.5 カーソル変数からの取り出し
                6.12.6 カーソル変数の規則
                6.12.7 カーソル変数を引数として渡す
                6.12.8 カーソル変数の制約
        6.13 カーソルを使用する
                6.13.1 カーソルによる外部キー入力の妥当性検査
                6.13.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.5.4 例外ハンドラで発生した例外
        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.2 レコードベースのデータを参照する
                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.1.1 PL/SQL表
                10.1.2 ネストされた表とVARRY
        10.2 PL/SQL表の特徴
        10.3 PL/SQL表とDML文
        10.4 PL/SQL表の宣言
                10.4.1 表TYPE(型)の定義
                10.4.2 PL/SQL表の宣言
        10.5 PL/SQL表の行の参照と変更
                10.5.1 行番号式の自動変換
                10.5.2 未定義の行を参照する
                10.5.3 PL/SQL表のランダムな使用法
                10.5.4 PL/SQL表をパラメータとして渡す
        10.6 PL/SQL表の行への値の代入
                10.6.1 直接代入
                10.6.2 反復型代入
                10.6.3 集約代入
        10.7 PL/SQL表の削除
        10.8 PL/SQLリリース2.3でのPL/SQL表の改良点
                10.8.1 PL/SQLレコード表
                10.8.2 PL/SQL表の組み込み機能
        10.9 PL/SQL表の使用法
                10.9.1 データベース情報をPL/SQL表に転送する
                10.9.2 データに基づく行番号
                10.9.3 PL/SQL表を表示する
                10.9.4 PL/SQL表を使って伝統的な配列を作成する
                10.9.5 PL/SQL表を使って外部キーの検索を最適化する


III部 組み込み関数

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章 数値関数、LOBとその他の関数
        13.1 数値関数の説明
        13.2 LOB関数の説明
        13.3 その他の関数の説明

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 日付マネージャの作成


IV部 モジュラコード

15章 プロシージャと関数
        15.1 モジュラコード
        15.2 PL/SQLのブロック構造
                15.2.1 各部の作成順
                15.2.2 PL/SQLブロック構造の例
        15.3 無名ブロック
                15.3.1 無名ブロックの構造
                15.3.2 無名ブロックの例
                15.3.3 Oracleツール内の無名ブロック
                15.3.4 ネストされたブロック
                15.3.5 有効範囲と可視性
                15.3.6 ブロックラベル
        15.4 プロシージャ
                15.4.1 プロシージャの呼び出し
                15.4.2 プロシージャヘッダー
                15.4.3 プロシージャ本体
                15.4.4 ENDラベル
        15.5 関数
                15.5.1 関数の構造
                15.5.2 RETURNデータ型
                15.5.3 ENDラベル
                15.5.4 関数の呼び出し
                15.5.5 関数ヘッダー
                15.5.6 関数本体
                15.5.7 小さな関数
                15.5.8 RETURN文
        15.6 パラメータ
                15.6.1 パラメータの定義
                15.6.2 パラメータのモード
                15.6.3 実パラメータと仮パラメータ
                15.6.4 実パラメータと仮パラメータを対応付ける
                15.6.5 デフォルト値
        15.7 ローカルモジュール
                15.7.1 ローカルモジュールを使用する利点
                15.7.2 コード量の削減
                15.7.3 読みやすさの向上
                15.7.4 ボトムアップ式の解釈
                15.7.5 ローカルモジュールの有効範囲
                15.7.6 ローカルモジュールを使用してコードをすっきりさせる
        15.8 モジュールのオーバーロード
                15.8.1 PL/SQL組み込み関数のオーバーロード
                15.8.2 オーバーロードの利点
                15.8.3 モジュールのオーバーロードを行う場所
                15.8.4 オーバーロードの制限
        15.9 前方宣言
        15.10 モジュール化の勧め

16章 パッケージ
        16.1 パッケージの利点
                16.1.1 強制的な情報隠蔽
                16.1.2 オブジェクト指向設計
                16.1.3 トップダウン設計
                16.1.4 オブジェクトの永続性
                16.1.5 パフォーマンスの向上
        16.2 パッケージ構造の概要
                16.2.1 仕様
                16.2.2 本体
                16.2.3 パッケージの構文
                16.2.4 パッケージのパブリック要素とプライベート要素
                16.2.5 パッケージ要素の参照方法
                16.2.6 パッケージのクイックツアー
                16.2.7 pets_incパッケージの本体
        16.3 パッケージ仕様
                16.3.1 本体のないパッケージ
                16.3.2 パッケージ内カーソルの宣言
        16.4 パッケージ本体
                16.4.1 仕様での宣言と本体での宣言
                16.4.2 本体とパッケージの同期をとる
        16.5 パッケージデータ
                16.5.1 パッケージデータのアーキテクチャ
                16.5.2 単一のOracleセッション内でグローバル
                16.5.3 グローバルなパブリックデータ
                16.5.4 グローバルなプライベートデータ
                16.5.5 グローバルデータへのインタフェースを提供する
        16.6 パッケージの初期化
                16.6.1 パッケージ初期化の欠点
                16.6.2 初期化部で複雑なロジックを実行する
                16.6.3 副作用
                16.6.4 初期化部でセッションデータをロードする

17章 SQL内でのPL/SQL関数呼び出し
        17.1 問題の把握
        17.2 SQL文内でストアド関数を呼び出すための構文
        17.3 SQL文内のストアド関数の要件
        17.4 SQL内でのPL/SQL関数の制限
        17.5 SQL内でのパッケージ化された関数の呼び出し
                17.5.1 RESTRICT_REFERENCESプラグマ
                17.5.2 パッケージ初期化部の純粋レベルを表明する
        17.6 列名と関数名の優先順位
        17.7 現実:SQL内のPL/SQL関数呼び出し
                17.7.1 手作業によるプラグマの適用
                17.7.2 読み取り一貫性モデルの複雑さ
        17.8 組み込みPL/SQLの例
                17.8.1 計算式のカプセル化
                17.8.2 スカラー値と集約値の組み合わせ
                17.8.3 相互関連副問い合わせを置換する
                17.8.4 DECODE関数をIF文で置換する
                17.8.5 GROUP BY部分列値
                17.8.6 列値の順次処理
                17.8.7 SQL文内の再帰処理
索引