本書について
本書の対象読者
本書の使用法
規則
関連資料
プログラミングの前提条件
DB2 アプリケーションのコーディングの概説
変数の宣言および初期化
データベース・サーバーへの接続
トランザクションのコーディング
プログラムの終了
トランザクションの暗黙終了
疑似コードによるアプリケーションの枠組み
DB2 アプリケーションの設計
データへのアクセス
データ値の制御
データの関連の制御
サーバーにおけるアプリケーションのロジック
IBM DB2 Universal Database Project Add-In for Microsoft Visual C++
サポートされる SQL ステートメント
許可についての考慮事項
動的 SQL
静的 SQL
API の使用
例
組み込み SQL または DB2 CLI プログラムで使用されるデータベース・マネージャー API
テスト環境のセットアップ
テスト・データベースの作成
テスト表の作成
テスト・データの生成
プログラムの実行、テスト、およびデバッグ
SQL ステートメントのプロトタイプ化
ホスト言語における組み込み SQL ステートメントの使用
ソース・ファイルの作成と準備
組み込み SQL 用のパッケージの作成
プリコンパイル
コンパイルとリンク
バインド
バインドの実行据え置きの利点
DB2 バインド・ファイル記述ユーティリティー - db2bfd
アプリケーション、バインド・ファイル、およびパッケージの関係
タイム・スタンプ
再バインド
静的 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 との比較
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 かの決定
生成列
識別列
宣言済み一時表
保管点によるトランザクションの制御
保管点の制約事項
保管点およびデータ定義言語 (DDL)
保管点およびバッファー化挿入
カーソル・ブロック化付きの保管点の使用
保管点および XA に準拠したトランザクション・マネージャー
ストアード・プロシージャーの概説
ストアード・プロシージャーの利点
ストアード・プロシージャーの作成
クライアント・アプリケーション
サーバー上でのストアード・プロシージャー
OLE 自動化ストアード・プロシージャーの作成
OUT パラメーターのストアード・プロシージャーの例
コード・ページに関する考慮事項
C++ に関する考慮事項
グラフィック・ホスト変数に関する考慮事項
複数サイト更新に関する考慮事項
NOT FENCED ストアード・プロシージャー
ストアード・プロシージャーからの結果セットの戻り
例: ストアード・プロシージャーからの結果セットを戻す
問題の解決
SQL プロシージャーおよび外部プロシージャーの比較
有効な SQL プロシージャー本体ステートメント
CREATE PROCEDURE ステートメントの発行
SQL プロシージャーでの処理条件
条件ハンドラーの宣言
SIGNAL および RESIGNAL ステートメント
SQL プロシージャーの SQLCODE および SQLSTATE 変数
SQL プロシージャーでの動的 SQL の使用
ネストされた SQL プロシージャー
ネストされた SQL プロシージャー間でのパラメーターの受け渡し
ネストされた SQL プロシージャーからの結果セットの戻り
ネストされた SQL プロシージャーでの制約事項
SQL プロシージャーからの結果セットの戻り
呼び出し元またはクライアントへ結果セットを戻す
呼び出し元として結果セットを受け取る
SQL プロシージャーのデバッグ
SQL プロシージャーのエラー・メッセージを表示する
中間ファイルを使用した SQL プロシージャーのデバッグ
SQL プロシージャーの例
ストアード・プロシージャー・ビルダーの説明
ストアード・プロシージャー・ビルダーを使用する利点
ストアード・プロシージャーの新規作成
既存のストアード・プロシージャーでの作業
ストアード・プロシージャー・ビルダー・プロジェクトの作成
ストアード・プロシージャーのデバッグ
DB2 オブジェクト拡張を使用する理由
DB2 のオブジェクト関連機能
特殊タイプを使用する理由
特殊タイプの定義
修飾されない特殊タイプの分析
CREATE DISTINCT TYPE の使用例
例: 通貨
例: ジョブ・アプリケーション
特殊タイプを使用した、表の定義
例: 売上
例: 応募の書式
特殊タイプの操作
特殊タイプの操作例
例: 特殊タイプと定数の比較
例: 特殊タイプ間のキャスト
例: 特殊タイプを使用した比較
例: 特殊タイプを使用したソース派生 UDF
例: 特殊タイプを使用した割り当て
例: 動的 SQL での割り当て
例: 異なる特殊タイプを使用した割り当て
例: UNION 形式での特殊タイプの使用
構造型の概説
構造型階層の作成
オブジェクトのタイプ付き表への保管
オブジェクトの列への保管
構造型の付加的な特性
タイプ付き表での構造型の使用
タイプ付き表の作成
タイプ付き表への挿入
参照タイプの使用
参照タイプの比較
タイプ付き視点の作成
ユーザー定義タイプ (UDT) またはタイプ・マッピングの除去
視点の更新または除去
タイプ付き表の照会
参照を逆参照する照会
付加的な照会仕様技法
その他のヒント
列タイプとしての構造型の作成と使用
構造型インスタンスの列への挿入
構造型列を持つ表の定義
構造型属性を持つタイプの定義
構造型値が入っている行の挿入
構造型値の検索と変更
transform のタイプとの関連付け
transform グループを指定する必要のある場合
ホスト言語プログラムへのマッピングの作成: transform 関数
構造型ホスト変数の処理
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 とメソッドの登録例
例: べき乗
例: ストリングの検索
例: BLOB ストリング検索
例: UDT のストリング検索
例: UDT パラメーターを指定した外部関数
例: UDT での AVG
例: 計算
例: OLE オートメーション・オブジェクトを使った計算
例: 文書 ID を戻す表関数
関数とメソッドの使用法
関数の参照
関数呼び出しの例
関数でのパラメーター・マーカーの使用法
修飾された関数参照の使用法
修飾されない関数参照の使用法
関数参照の要約
説明
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 のデバッグ
トリガーを使う理由
トリガーの利点
トリガーの概説
トリガー事象
影響される行のセット
トリガーの細分性
トリガー活動化時間
変位変数
変換表
トリガー・アクション
トリガー・アクション条件
トリガー SQL ステートメント
SQL トリガー・ステートメント内の関数
トリガーのカスケード
参照制約との対話
複数トリガーの順序付け
トリガー、制約、UDT、UDF、および LOB 間の協調
情報の抽出
表における操作の妨害
業務規則の定義
アクションの定義
各国語サポートに関する考慮
照合順序の概説
コード・ページ値の導出
アプリケーション・プログラム中のロケールの導出
各国語サポート・アプリケーションの開発
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 がデータ・ソース関数を呼び出せるようにする
関数を呼び出す際のオーバーヘッドの削減
CREATE FUNCTION MAPPING ステートメントでの関数名の指定
関数マッピングの中断
パススルーを使用してデータ・ソースを直接照会する
パススルー・セッションでの SQL 処理
考慮事項および制約事項
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 のプログラミングに関する考慮事項
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 の SQLSTATE および SQLCODE 変数
Perl DB2 アプリケーションの例
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 での SQL ステートメントの組み込み
FORTRAN のホスト変数
FORTRAN でのホスト変数の命名
ホスト変数の宣言
FORTRAN の標識変数
FORTRAN における LOB 宣言
FORTRAN における LOB ロケーター宣言
FORTRAN におけるファイル参照宣言
FORTRAN でサポートされている SQL データ・タイプ
FORTRAN の SQLSTATE および SQLCODE 変数
FORTRAN での複数バイト文字セットに関する考慮事項
FORTRAN での日本語または中国語 (繁体字) EUC、および UCS-2 に関する考慮事項
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 に関する考慮事項
組み込み SQL なしの DB2 API サンプル
DB2 API 組み込み SQL サンプル
DB2 API なしの組み込み SQL サンプル
ユーザー定義関数のサンプル
DB2 コール・レベル・インターフェースのサンプル
Java サンプル
SQL プロシージャーのサンプル
ADO、RDO、および MTS サンプル
オブジェクトのリンクと埋め込みのサンプル
コマンド行プロセッサーのサンプル
ログ管理ユーザー出口サンプル
DB2DARI ストアード・プロシージャー
クライアント・アプリケーションでの SQLDA の使用
DB2DARI クライアントにおけるホスト変数の使用
ストアード・プロシージャーにおける SQLDA の使用
データ構造使用法の要約
入出力 SQLDA および SQLCA 構造
DB2DARI ストアード・プロシージャーの戻り値
DB2GENERAL UDF およびストアード・プロシージャー
サポートされる SQL データ・タイプ
Java ストアード・プロシージャーと UDF のクラス
NOT FENCED ストアード・プロシージャー
入力 SQLDA プログラムの例
入力 SQLDA クライアント・アプリケーション例の動作の仕組み
C の例: V5SPCLI.SQC
入力 SQLDA ストアード・プロシージャー例の動作の仕組み
C の例: V5SPSRV.SQC
データ定義言語 (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 ステートメント
DB2 PDF ファイルおよびハードコピー版資料
DB2 情報
PDF 資料の印刷
印刷資料の注文方法
DB2 オンライン文書
オンライン・ヘルプへのアクセス
オンライン情報の表示
DB2 ウィザードの使用
文書サーバーのセットアップ
オンライン情報の検索