アプリケーション開発の手引き

目次

DB2 アプリケーション開発の概念

  • DB2 アプリケーション開発にあたって
    本書について
    本書の対象読者
    本書の使用法
    規則
    関連資料

  • DB2 アプリケーションのコーディング
    プログラミングの前提条件
    DB2 アプリケーションのコーディングの概説
    変数の宣言および初期化
    データベース・サーバーへの接続
    トランザクションのコーディング
    プログラムの終了
    トランザクションの暗黙終了
    疑似コードによるアプリケーションの枠組み
    DB2 アプリケーションの設計
    データへのアクセス
    データ値の制御
    データの関連の制御
    サーバーにおけるアプリケーションのロジック
    IBM DB2 Universal Database Project Add-In for Microsoft Visual C++
    サポートされる SQL ステートメント
    許可についての考慮事項
    動的 SQL
    静的 SQL
    API の使用

    組み込み SQL または DB2 CLI プログラムで使用されるデータベース・マネージャー API
    テスト環境のセットアップ
    テスト・データベースの作成
    テスト表の作成
    テスト・データの生成
    プログラムの実行、テスト、およびデバッグ
    SQL ステートメントのプロトタイプ化

    アプリケーション内の組み込み SQL

  • 組み込み SQL の概説
    ホスト言語における組み込み SQL ステートメントの使用
    ソース・ファイルの作成と準備
    組み込み SQL 用のパッケージの作成
    プリコンパイル
    コンパイルとリンク
    バインド
    バインドの実行据え置きの利点
    DB2 バインド・ファイル記述ユーティリティー - db2bfd
    アプリケーション、バインド・ファイル、およびパッケージの関係
    タイム・スタンプ
    再バインド

  • 静的 SQL プログラムの作成
    静的 SQL を使用する場合の特性とそれを使用する理由
    静的 SQL の利点
    例: 静的 SQL プログラム
    静的プログラムの動作の仕組み
    C の例: STATIC.SQC
    Java の例: Static.sqlj
    COBOL の例: STATIC.SQB
    データの検索および操作のための SQL ステートメントのコーディング
    データの検索
    ホスト変数の使用
    宣言生成プログラム - db2dclgn
    標識変数の使用
    データ・タイプ
    STATIC プログラムでの標識変数の使用
    カーソルを用いた複数行の選択
    カーソルの宣言と使用
    カーソルおよび作業単位に関する考慮事項
    例: カーソル・プログラム
    検索済みデータの更新と削除
    検索されたデータの更新
    検索されたデータの削除
    カーソルのタイプ
    例: OPENFTCH プログラム
    高度なスクロール技法
    すでに検索済みデータのスクロール
    データのコピーを保持する方法
    データを 2 度検索する方法
    表の末尾の位置の確立
    以前に検索されたデータの更新
    例: UPDAT プログラム
    診断処理と SQLCA 構造
    戻りコード
    SQLCODE および SQLSTATE
    SQLCA 構造におけるトークンの切り捨て
    WHENEVER ステートメントを用いたエラー処理
    例外、シグナル、割り込みハンドラーについての考慮事項
    出口リスト・ルーチンに関する考慮事項
    プログラム例での GET ERROR MESSAGE の使用

  • 動的 SQL プログラムの作成
    動的 SQL の使用目的
    動的 SQL サポート・ステートメント
    動的 SQL と静的 SQL との比較
    PREPARE、DESCRIBE、FETCH、および SQLDA の使用
    カーソルの宣言および使用
    例: 動的 SQL プログラム
    SQLDA の宣言
    最小の SQLDA 構造を用いたステートメントの準備
    十分な数の SQLVAR 項目を指定した SQLDA の割り振り
    SELECT ステートメントの記述
    行を保持するための記憶域の獲得
    カーソルの処理
    SQLDA 構造の割り振り
    SQLDA 構造を使用するデータの受け渡し
    対話式 SQL ステートメントの処理
    エンド・ユーザーからの SQL 要求の保管
    例: ADHOC プログラム
    動的 SQL への変数入力
    パラメーター・マーカーの使用
    例: VARINP プログラム
    DB2 コール・レベル・インターフェース (CLI)
    組み込み SQL と DB2 CLI との比較
    DB2 CLI を使用する場合の利点
    組み込み SQL か DB2 CLI かの決定

  • 一般的な DB2 アプリケーションの技法
    生成列
    識別列
    宣言済み一時表
    保管点によるトランザクションの制御
    保管点の制約事項
    保管点およびデータ定義言語 (DDL)
    保管点およびバッファー化挿入
    カーソル・ブロック化付きの保管点の使用
    保管点および XA に準拠したトランザクション・マネージャー

    ストアード・プロシージャー

  • ストアード・プロシージャー
    ストアード・プロシージャーの概説
    ストアード・プロシージャーの利点
    ストアード・プロシージャーの作成
    クライアント・アプリケーション
    サーバー上でのストアード・プロシージャー
    OLE 自動化ストアード・プロシージャーの作成
    OUT パラメーターのストアード・プロシージャーの例
    コード・ページに関する考慮事項
    C++ に関する考慮事項
    グラフィック・ホスト変数に関する考慮事項
    複数サイト更新に関する考慮事項
    NOT FENCED ストアード・プロシージャー
    ストアード・プロシージャーからの結果セットの戻り
    例: ストアード・プロシージャーからの結果セットを戻す
    問題の解決

  • SQL プロシージャーの作成
    SQL プロシージャーおよび外部プロシージャーの比較
    有効な SQL プロシージャー本体ステートメント
    CREATE PROCEDURE ステートメントの発行
    SQL プロシージャーでの処理条件
    条件ハンドラーの宣言
    SIGNAL および RESIGNAL ステートメント
    SQL プロシージャーの SQLCODE および SQLSTATE 変数
    SQL プロシージャーでの動的 SQL の使用
    ネストされた SQL プロシージャー
    ネストされた SQL プロシージャー間でのパラメーターの受け渡し
    ネストされた SQL プロシージャーからの結果セットの戻り
    ネストされた SQL プロシージャーでの制約事項
    SQL プロシージャーからの結果セットの戻り
    呼び出し元またはクライアントへ結果セットを戻す
    呼び出し元として結果セットを受け取る
    SQL プロシージャーのデバッグ
    SQL プロシージャーのエラー・メッセージを表示する
    中間ファイルを使用した SQL プロシージャーのデバッグ
    SQL プロシージャーの例

  • IBM DB2 ストアード・プロシージャー・ビルダー
    ストアード・プロシージャー・ビルダーの説明
    ストアード・プロシージャー・ビルダーを使用する利点
    ストアード・プロシージャーの新規作成
    既存のストアード・プロシージャーでの作業
    ストアード・プロシージャー・ビルダー・プロジェクトの作成
    ストアード・プロシージャーのデバッグ

    オブジェクト関連プログラミング

  • オブジェクト関連機能の使用
    DB2 オブジェクト拡張を使用する理由
    DB2 のオブジェクト関連機能

  • ユーザー定義特殊タイプ
    特殊タイプを使用する理由
    特殊タイプの定義
    修飾されない特殊タイプの分析
    CREATE DISTINCT TYPE の使用例
    例: 通貨
    例: ジョブ・アプリケーション
    特殊タイプを使用した、表の定義
    例: 売上
    例: 応募の書式
    特殊タイプの操作
    特殊タイプの操作例
    例: 特殊タイプと定数の比較
    例: 特殊タイプ間のキャスト
    例: 特殊タイプを使用した比較
    例: 特殊タイプを使用したソース派生 UDF
    例: 特殊タイプを使用した割り当て
    例: 動的 SQL での割り当て
    例: 異なる特殊タイプを使用した割り当て
    例: UNION 形式での特殊タイプの使用

  • 複合オブジェクトの処理: ユーザー定義の構造型
    構造型の概説
    構造型階層の作成
    オブジェクトのタイプ付き表への保管
    オブジェクトの列への保管
    構造型の付加的な特性
    タイプ付き表での構造型の使用
    タイプ付き表の作成
    タイプ付き表への挿入
    参照タイプの使用
    参照タイプの比較
    タイプ付き視点の作成
    ユーザー定義タイプ (UDT) またはタイプ・マッピングの除去
    視点の更新または除去
    タイプ付き表の照会
    参照を逆参照する照会
    付加的な照会仕様技法
    その他のヒント
    列タイプとしての構造型の作成と使用
    構造型インスタンスの列への挿入
    構造型列を持つ表の定義
    構造型属性を持つタイプの定義
    構造型値が入っている行の挿入
    構造型値の検索と変更
    transform のタイプとの関連付け
    transform グループを指定する必要のある場合
    ホスト言語プログラムへのマッピングの作成: transform 関数
    構造型ホスト変数の処理

  • ラージ・オブジェクト (LOB) の使用
    LOB について
    ラージ・オブジェクト・データ・タイプ (BLOB、CLOB、DBCLOB) について
    ラージ・オブジェクト・ロケーターについて
    例: CLOB 値を使う作業のためのロケーターの使用
    LOBLOC プログラム例の作動方法
    C の例: LOBLOC.SQC
    COBOL の例: LOBLOC.SQB
    例: LOB 式の評価の据え置き
    LOBEVAL プログラム例の作動方法
    C の例: LOBEVAL.SQC
    COBOL の例: LOBEVAL.SQB
    標識変数および LOB ロケーター
    LOB ファイル参照変数
    例: ファイルへのドキュメントの抽出
    LOBFILE プログラム例の作動方法
    C の例: LOBFILE.SQC
    COBOL の例: LOBFILE.SQB
    例: CLOB 列へのデータの挿入

  • ユーザー定義関数 (UDF) およびメソッド
    関数とメソッドについて
    関数とメソッドを使用する理由
    UDF とメソッドの概念
    関数とメソッドのインプリメント
    関数とメソッドの作成
    関数とメソッドの登録
    UDF とメソッドの登録例
    例: べき乗
    例: ストリングの検索
    例: BLOB ストリング検索
    例: UDT のストリング検索
    例: UDT パラメーターを指定した外部関数
    例: UDT での AVG
    例: 計算
    例: OLE オートメーション・オブジェクトを使った計算
    例: 文書 ID を戻す表関数
    関数とメソッドの使用法
    関数の参照
    関数呼び出しの例
    関数でのパラメーター・マーカーの使用法
    修飾された関数参照の使用法
    修飾されない関数参照の使用法
    関数参照の要約

  • ユーザー定義関数 (UDF) とメソッドの作成
    説明
    DB2 と UDF 間のインターフェース
    DB2 から UDF に渡される引き数
    UDF 引き数の使用の要約
    SQL データ・タイプの UDF への受け渡し方法
    32 ビット・プラットフォームおよび 64 ビット・プラットフォームでのスクラッチパッドの作成
    UDF インクルード・ファイル: sqludf.h
    Java ユーザー定義の関数の作成および使用
    Java UDF のコーディング
    Java UDF の実行の仕方の変更
    Java の表関数実行モデル
    OLE オートメーション UDF の作成
    OLE オートメーション UDF の作成と登録
    オブジェクト・インスタンスとスクラッチパッドに関する考慮事項
    SQL データ・タイプの OLE オートメーション UDF への受け渡し方法
    BASIC と C++ での OLE オートメーション UDF のインプリメンテーション
    OLE DB 表関数
    OLE DB 表関数の作成
    完全修飾行セット名
    OLE DB Provider のサーバー名の定義
    ユーザー・マッピングの定義
    サポートされる OLE DB データ・タイプ
    スクラッチパッドに関する考慮事項
    表関数に関する考慮事項
    表関数のエラー処理
    スカラー関数のエラー処理
    UDF のパラメーターや結果としての LOB ロケーターの使用
    LOB ロケーター使用のシナリオ
    コーディングに関するその他の考慮事項
    ヒントとアドバイス
    UDF に関する制限と警告
    UDF コードの例
    例: 整数除算演算子
    例: CLOB の折り返し、母音の検出
    例: カウンター
    例: 天気表関数
    例: LOB ロケーターを使用する関数
    例: BASIC でのカウンター OLE オートメーション UDF
    例: C++ でのカウンター OLE オートメーション UDF
    UDF のデバッグ

  • 活動状態の DBMS でのトリガーの使用
    トリガーを使う理由
    トリガーの利点
    トリガーの概説
    トリガー事象
    影響される行のセット
    トリガーの細分性
    トリガー活動化時間
    変位変数
    変換表
    トリガー・アクション
    トリガー・アクション条件
    トリガー SQL ステートメント
    SQL トリガー・ステートメント内の関数
    トリガーのカスケード
    参照制約との対話
    複数トリガーの順序付け
    トリガー、制約、UDT、UDF、および LOB 間の協調
    情報の抽出
    表における操作の妨害
    業務規則の定義
    アクションの定義

    DB2 プログラミングに関する考慮事項

  • 複合環境におけるプログラミング
    各国語サポートに関する考慮
    照合順序の概説
    コード・ページ値の導出
    アプリケーション・プログラム中のロケールの導出
    各国語サポート・アプリケーションの開発
    DBCS 文字セット
    拡張 UNIX コード (EUC) 文字セット
    DBCS 環境での CLI/ODBC/JDBC/SQLJ プログラムの実行
    日本語および中国語 (繁体字) EUC および UCS-2 コード・セットに関する考慮事項
    複数サイト更新に関する考慮事項
    リモート作業単位
    複数サイト更新
    ホストまたは AS/400 サーバーへのアクセス
    マルチスレッドのデータベースのアクセス
    マルチスレッドの使用に際しての推奨事項
    コード・ページおよび国別コードを処理するマルチスレッド UNIX アプリケーション
    複数のスレッドの使用に際して潜んでいる落とし穴
    並行トランザクション
    並行トランザクションを使用する際に気を付けるべき落とし穴
    X/Open XA インターフェース・プログラミングに関する考慮事項
    アプリケーション連係
    ネットワークを通じた大量データの処理

  • 区画環境におけるプログラミング上の考慮事項
    パフォーマンスの向上
    FOR READ ONLY カーソルの使用
    指示 DSS およびローカル・バイパスの使用
    バッファー化挿入の使用
    例: 大量データの抽出 (largevol.c)
    テスト環境の作成
    エラー処理考慮事項
    重大エラー
    マージされた複数の SQLCA 構造
    エラーを戻した区画を識別する
    デバッグ
    ループ状態または延期状態のアプリケーションの診断

  • DB2 連合システム用のプログラムの作成
    DB2 連合システムの紹介
    データ・ソース表および視点へのアクセス
    通称による作業
    データ保全性を保守するための分離レベルの使用
    データ・タイプ・マッピングの処理
    ローカルに定義するデータ・タイプを DB2 が判別する方法
    省略時のデータ・タイプ・マッピング
    省略時タイプ・マッピングを上書きして新しいタイプ・マッピングを作成する方法
    分散要求を使用したデータ・ソースの照会
    分散要求のコーディング
    サーバー・オプションを使用して最適化を容易にする
    データ・ソース関数の呼び出し
    DB2 がデータ・ソース関数を呼び出せるようにする
    関数を呼び出す際のオーバーヘッドの削減
    CREATE FUNCTION MAPPING ステートメントでの関数名の指定
    関数マッピングの中断
    パススルーを使用してデータ・ソースを直接照会する
    パススルー・セッションでの SQL 処理
    考慮事項および制約事項

    言語に関する考慮事項

  • C および C++ でのプログラミング
    C および C++ でのプログラミングに関する考慮事項
    C および C++ での言語制約事項
    C および C++ での 3 文字表記
    C++ のタイプ修飾に関する考慮事項
    C および C++ の入出力ファイル
    C および C++ のインクルード・ファイル
    C および C++ のインクルード・ファイル
    C および C++ での組み込み SQL ステートメント
    C および C++ でのホスト変数
    C および C++ でのホスト変数の命名
    C および C++ でのホスト変数の宣言
    C および C++ での標識変数
    C または C++ でのグラフィック・ホスト変数宣言
    C または C++ での LOB データ宣言
    C または C++ における LOB ロケーター宣言
    C または C++ におけるファイル参照宣言
    C および C++ でのホスト変数の初期化
    C マクロ展開
    C および C++ でのホスト構造サポート
    C および C++ での標識表
    C および C++ での Null 終了ストリング
    C および C++ でのポインター・データ・タイプ
    C および C++ でのクラス・データ・メンバーのホスト変数としての使用
    C および C++ での修飾およびメンバー演算子の使用
    C および C++ でのグラフィック・ホスト変数の処理
    C および C++ での日本語または中国語 (繁体字) EUC、および UCS-2 に関する考慮事項
    C および C++ でのサポートされている SQL データ・タイプ
    C および C++ における FOR BIT DATA
    C および C++ における SQLSTATE および SQLCODE 変数

  • Java でのプログラミング
    Java のプログラミングに関する考慮事項
    SQLJ と JDBC の比較
    他の言語と比較した Java の利点
    Java における SQL 機密保護
    Java のソースおよび出力ファイル
    Java クラス・ライブラリー
    Java パッケージ
    Java でサポートされている SQL データ・タイプ
    Java の SQLSTATE および SQLCODE 値
    Java のトレース機能
    Java アプリケーションおよびアプレットの作成
    JDBC プログラミング
    DB2Appl プログラムの実行方法
    JDBC アプリケーションの配布
    JDBC アプレットの配布および実行
    JDBC 2.0
    SQLJ プログラミング
    DB2 SQLJ サポート
    Java での SQL ステートメントの組み込み
    Java のホスト変数
    SQLJ におけるストアード・プロシージャーおよび関数への呼び出し
    SQLJ プログラムのコンパイルと実行
    SQLJ 変換プログラム・オプション
    Java のストアード・プロシージャーおよび UDF
    Java クラスを置く場所
    Java ルーチン・クラスの更新
    Java でのストアード・プロシージャーのデバッグ
    Java ストアード・プロシージャーおよび UDF
    JDBC 1.22 で LOB およびグラフィカル・オブジェクトを使用する
    JDBC および SQLJ の相互運用性
    セッション共用
    Java での接続リソース管理

  • Perl でのプログラミング
    Perl でのプログラミングに関する考慮事項
    Perl の制限事項
    Perl を使ったデータベースへの接続
    Perl での取り出し結果
    Perl のパラメーター・マーカー
    Perl の SQLSTATE および SQLCODE 変数
    Perl DB2 アプリケーションの例

  • COBOL でのプログラミング
    COBOL でのプログラミングに関する考慮事項
    COBOL での言語制限
    COBOL の入力および出力ファイル
    COBOL のインクルード・ファイル
    COBOL での SQL ステートメントの組み込み
    COBOL のホスト変数
    COBOL でのホスト変数の命名
    ホスト変数の宣言
    COBOL の標識変数
    COBOL における LOB 宣言
    COBOL における LOB ロケーター宣言
    COBOL におけるファイル参照宣言
    COBOL でのホスト構造サポート
    COBOL のインディケーター表
    COBOL グループ・データ項目での REDEFINES の使用
    BINARY/COMP-4 COBOL データ・タイプの使用
    COBOL でサポートされる SQL データ・タイプ
    COBOL での FOR BIT DATA
    COBOL での SQLSTATE および SQLCODE 変数
    COBOL での日本語または中国語 (繁体字) EUC、および UCS-2 に関する考慮事項
    オブジェクト指向 COBOL

  • FORTRAN でのプログラミング
    FORTRAN でのプログラミングに関する考慮事項
    FORTRAN の言語制限
    FORTRAN での参照による呼び出し
    FORTRAN でのデバッグと注釈行
    FORTRAN でのプリコンパイルに関する考慮事項
    FORTRAN の入力および出力ファイル
    FORTRAN のインクルード・ファイル
    FORTRAN でのファイルの組み込み
    FORTRAN での SQL ステートメントの組み込み
    FORTRAN のホスト変数
    FORTRAN でのホスト変数の命名
    ホスト変数の宣言
    FORTRAN の標識変数
    FORTRAN における LOB 宣言
    FORTRAN における LOB ロケーター宣言
    FORTRAN におけるファイル参照宣言
    FORTRAN でサポートされている SQL データ・タイプ
    FORTRAN の SQLSTATE および SQLCODE 変数
    FORTRAN での複数バイト文字セットに関する考慮事項
    FORTRAN での日本語または中国語 (繁体字) EUC、および UCS-2 に関する考慮事項

  • REXX でのプログラミング
    REXX でのプログラミングに関する考慮事項
    REXX の言語制限
    REXX における SQLEXEC、SQLDBS、および SQLDB2 の登録
    REXX での SQL ステートメントの組み込み
    REXX のホスト変数
    REXX でのホスト変数の命名
    REXX でのホスト変数の参照
    REXX の標識変数
    事前定義 REXX 変数
    REXX の LOB ホスト変数
    REXX における LOB ロケーター宣言
    REXX における LOB ファイル参照宣言
    REXX での LOB ホスト変数のクリア
    REXX でサポートされている SQL データ・タイプ
    REXX でのカーソルの使用
    REXX の実行要件
    REXX のバインド・ファイル
    REXX の API 構文
    REXX のストアード・プロシージャー
    REXX におけるストアード・プロシージャーの呼び出し
    REXX の日本語または中国語 (繁体字) EUC に関する考慮事項

    付録

  • 付録 A. サポートされる SQL ステートメント

  • 付録 B. サンプル・プログラム
    組み込み SQL なしの DB2 API サンプル
    DB2 API 組み込み SQL サンプル
    DB2 API なしの組み込み SQL サンプル
    ユーザー定義関数のサンプル
    DB2 コール・レベル・インターフェースのサンプル
    Java サンプル
    SQL プロシージャーのサンプル
    ADO、RDO、および MTS サンプル
    オブジェクトのリンクと埋め込みのサンプル
    コマンド行プロセッサーのサンプル
    ログ管理ユーザー出口サンプル

  • 付録 C. DB2DARI および DB2GENERAL ストアード・プロシージャーと UDF
    DB2DARI ストアード・プロシージャー
    クライアント・アプリケーションでの SQLDA の使用
    DB2DARI クライアントにおけるホスト変数の使用
    ストアード・プロシージャーにおける SQLDA の使用
    データ構造使用法の要約
    入出力 SQLDA および SQLCA 構造
    DB2DARI ストアード・プロシージャーの戻り値
    DB2GENERAL UDF およびストアード・プロシージャー
    サポートされる SQL データ・タイプ
    Java ストアード・プロシージャーと UDF のクラス
    NOT FENCED ストアード・プロシージャー
    入力 SQLDA プログラムの例
    入力 SQLDA クライアント・アプリケーション例の動作の仕組み
    C の例: V5SPCLI.SQC
    入力 SQLDA ストアード・プロシージャー例の動作の仕組み
    C の例: V5SPSRV.SQC

  • 付録 D. ホストまたは AS/400 環境でのプログラミング
    データ定義言語 (DDL) の使用
    データ操作言語 (DML) の使用
    数値データ・タイプ
    混合バイト・データ
    長フィールド
    ラージ・オブジェクト (LOB) データ・タイプ
    ユーザー定義タイプ (UDT)
    ROWID データ・タイプ
    64 ビット整数 (BIGINT) データ・タイプ
    データ制御言語 (DCL) の使用
    接続と切断
    プリコンパイル
    ブロック化
    パッケージ属性
    C ヌル終了ストリング
    スタンドアロンの SQLCODE および SQLSTATE
    分類順序の定義
    参照保全の管理
    ロック
    SQLCODE と SQLSTATE の相違点
    システム・カタログの使用
    検索割り当て時の数値変換のオーバーフロー
    分離レベル
    ストアード・プロシージャー
    ストアード・プロシージャー・ビルダー
    NOT ATOMIC 複合 SQL
    DB2 コネクトでの複数サイト更新
    DB2 コネクトでサポートされている AS/400 サーバー SQL ステートメント
    DB2 コネクトで拒否される AS/400 サーバー SQL ステートメント

  • 付録 E. EBCDIC 2 進照合のシミュレート

  • 付録 F. DB2 ライブラリーの使用法
    DB2 PDF ファイルおよびハードコピー版資料
    DB2 情報
    PDF 資料の印刷
    印刷資料の注文方法
    DB2 オンライン文書
    オンライン・ヘルプへのアクセス
    オンライン情報の表示
    DB2 ウィザードの使用
    文書サーバーのセットアップ
    オンライン情報の検索

  • 付録 G. 特記事項
    商標

  • 付録 H. IBM と連絡をとる
    製品情報

  • 索引


    [ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]