BIND コマンド
BIND コマンドは、バインド・ユーティリティーを呼び出し、プリコンパイラーによって生成されたバインド・ファイルに保管された SQL ステートメントを作成します。また、データベースに保管されるパッケージを作成します。
範囲
このコマンドは、 db2nodes.cfgの任意のデータベース・パーティションから発行できます。 カタログ・データベース・パーティション上の データベース ・カタログを更新します。 その影響はすべてのデータベース・パーティションから見えます。
許可
- DBADM 権限
- EXPLAIN ONLY が指定されている場合は、EXPLAIN 権限または暗黙的に EXPLAIN を含む権限で十分です。
- パッケージが存在しない場合は、以下のいずれかの特権が必要です。
- パッケージのスキーマ名が存在しない場合は、データベースに対する BINDADD および IMPLICIT_SCHEMA 権限。
- パッケージのスキーマ名が存在する場合は、以下のものが必要です。
- スキーマに対する SCHEMAADM 権限
- スキーマに対する BINDADD 権限および CREATEIN 特権
- パッケージが存在する場合は、以下のいずれかの特権です。
- スキーマに対する SCHEMAADM 権限
- スキーマに対する ALTERIN 特権
- パッケージに対する BIND 特権
- Explain 表に対する INSERT 特権
- DATAACCESS 権限
アプリケーション内の静的 SQL ステートメントをコンパイルするために必要な特権もすべて必要です。 グループに認可された特権が、 静的ステートメントの許可の検査に使用されることはありません。
必要な接続
データベース。 暗黙的な接続が可能である場合には、 デフォルトのデータベースへの接続が確立されます。
コマンド構文
- For Db2®
- For Db2 on servers other than Linux®, Windows and UNIX
- Notes:
- 1 If the server does not support the DATETIME DEF option, it is mapped to DATETIME ISO.
- 2 The DEGREE option is only supported by DRDA Level 2 Application Servers.
- 3 DRDA defines the EXPLAIN option to have the value YES or NO. If the server does not support the EXPLAIN YES option, the value is mapped to EXPLAIN ALL.
コマンド・パラメーター
- filename
- アプリケーション・プログラムをプリコンパイルしたときに生成されたバインド・ファイル、
または複数のバインド・ファイル名を含むリスト・ファイルの名前を指定します。 バインド・ファイルの拡張子は
.bnd
です。 また、絶対パス名も指定できます。リスト・ファイルを指定した場合、その名前の先頭文字は @ 文字でなければなりません。 リスト・ファイルには、数行のバインド・ファイル名を含めることができます。 同一行にリストするバインド・ファイルはプラス (+) 文字で区切る必要がありますが、 各行の先頭ファイルの前や最後のファイルの後に + を挿入することはできません。 以下に例を示します。
これは、次のバインド・ファイルを含むリスト・ファイルです。/u/smith/sqllib/bnd/@all.lst
mybind1.bnd+mybind.bnd2+mybind3.bnd+ mybind4.bnd+mybind5.bnd+ mybind6.bnd+ mybind7.bnd
パスなしでバインド・ファイル名のみを指定すると、まず、現行ディレクトリーでそのファイルが検索されます。 ファイルが見つかると、そのファイルがピックアップされ、パッケージが作成されます。 現行ディレクトリーでファイルが見つからない場合は、インスタンスまたはインストール・パスからファイルが自動的にピックアップされます。
- ACTION
- パッケージを追加または置換できるかどうかを指示します。
- ADD
- 名前付きパッケージが存在せず、新規パッケージを作成するということを指示します。 パッケージが存在する場合、実行は停止し、診断エラー メッセージが返されます。
- REPLACE
- 既存のパッケージを、パッケージ名および作成者が同じ新規パッケージと置き換えることを指示します。 これは、ACTION オプションのデフォルト値です。
- RETAIN
- パッケージを置き換えたときに BIND および EXECUTE 権限が保持されるかどうかを指示します。 パッケージの所有権を変更した場合、
新規所有者は前のパッケージ所有者に BIND 権限と EXECUTE 権限を付与します。
- NO
- パッケージを置き換えたとき、 BIND および EXECUTE 権限を保持しません。 この値は Db2 ではサポートされていません。
- YES
- パッケージを置き換えたとき、BIND および EXECUTE 権限を保持します。 これはデフォルト値です。
- REPLVER version-id
- 特定のバージョンのパッケージを置き換えます。 バージョン ID は、どのバージョンのパッケージを置き換えるのかを指定するものです。 指定されたバージョンが存在しない場合には、エラーが戻されます。 REPLACEのREPLVERオプションが指定されておらず、バインドパッケージの名称、作成者、バージョンとマッチするパッケージがすでに存在している場合、そのパッケージは置き換えられます。 そうでない場合は、新しいパッケージが追加されます。
- APREUSE
- 静的 SQL アクセス・プランが再使用されるかどうかを指定します。 このオプションが有効である場合、照会コンパイラーは、バインド時および将来の暗黙および明示の再バインド時に、既存のパッケージ内のステートメントにアクセス・プランを再使用しようとします。
- YES
- 照会コンパイラーは、パッケージ内のステートメントにアクセス・プランを再使用しようとします。 既存のパッケージがある場合、照会コンパイラーは、新規バインド・ファイル内のステートメントと合致できるすべてのステートメントに対して、アクセス・プランを再使用しようとします。 ステートメントが合致するには、ステートメント・テキストは同一でなければならず、既存のパッケージ内のステートメントのセクション番号は、新規パッケージ内のステートメントに対するセクション番号の内容と一致しなければなりません。
- NO
- 照会コンパイラーは、パッケージ内のステートメントにアクセス・プランを再使用しようとしません。 これはデフォルト設定です。
- BLOCKING
- カーソルに対する行ブロックのタイプを指定します。 パーティション・データベース環境では、LOB 列データ・タイプ参照を含んだ行データのブロッキングもサポートされます。
- ALL
- FOR READ ONLY 節で指定されているカーソルまたは FOR UPDATE として指定されていないカーソルの場合、ブロック化が発生します。
あいまいなカーソルは読み取り専用として扱われます。
- NO
- どのカーソルの場合もブロッキングは行われません。
読み取り専用カーソルとあいまいカーソルの定義については、 DECLARE CURSOR ステートメント。
あいまいなカーソルは、更新可能として扱われます。
- UNAMBIG
- FOR READ ONLY 節で指定されているカーソルの場合、ブロック化が発生します。
FOR READ ONLY または FOR UPDATE 句で宣言されておらず、あいまいではなく読み取り専用のカーソルはブロックされます。 未確定カーソルはブロック化されません。
あいまいなカーソルは、更新可能として扱われます。
- BUSTIMESENSITIVE
- 静的および動的 SQL ステートメントでのアプリケーション期間のテンポラル表への参照が、CURRENT TEMPORAL BUSINESS_TIME 特殊レジスターの値の影響を受けるかどうかを示します。
- YES
- アプリケーション期間のテンポラル表への参照は、CURRENT TEMPORAL BUSINESS_TIME 特殊レジスターの値の影響を受けます。 この値はデフォルト値です。
- NO
- アプリケーション期間のテンポラル表への参照は、CURRENT TEMPORAL BUSINESS_TIME 特殊レジスターの値の影響を受けません。
- CCSIDG double-ccsid
- CREATE および ALTER TABLE SQL ステートメントの文字列定義 (特定の CCSID 句なし) 内の 2 バイト文字に使用されるコード化文字セット識別子 (CCSID) を指定する整数。 このオプションは、 Db2のサーバーではサポートされていません。 このオプションが指定されていない場合、DRDA サーバーは組み込みのデフォルト値を使用します。
- CCSIDM mixed-ccsid
- CREATE および ALTER TABLE SQL ステートメントの文字カラム定義で、 混合バイト文字用のコード化文字セット ID (CCSID) (特定の CCSID 節は使用しない) を指定する整数。 このオプションは、 Db2のサーバーではサポートされていません。 このオプションが指定されていない場合、DRDA サーバーは組み込みのデフォルト値を使用します。
- CCSIDS sbcs-ccsid
- CREATE および ALTER TABLE SQL ステートメントの文字列定義 (特定の CCSID 句なし) 内の 1 バイト文字に使用されるコード化文字セット識別子 (CCSID) を指定する整数。 このオプションは、 Db2ではサポートされていません。 このオプションが指定されていない場合、DRDA サーバーは組み込みのデフォルト値を使用します。
- CHARSUB
- CREATE および ALTER TABLE SQL ステートメントの列定義に使用する、
デフォルトの文字サブタイプを指定します。 このプリコンパイル/bind オプションは、 Db2のサーバーではサポートされていません。
- BIT
- 明示的にサブタイプを指定しなかった場合、 すべての新規文字カラムに FOR BIT DATA SQL 文字サブタイプが使用されます。
- DEFAULT
- 明示的にサブタイプを指定しなかった場合、 すべての新規文字カラムにターゲットの組み込みデフォルト・サブタイプが使用されます。
- MIXED
- 明示的にサブタイプを指定しなかった場合、 すべての新規文字カラムに FOR MIXED DATA SQL 文字サブタイプが使用されます。
- SBCS
- 明示的にサブタイプを指定しなかった場合、 すべての新規文字カラムに FOR SBCS DATA SQL 文字サブタイプが使用されます。
- CLIPKG cli-packages
- 3 から 30 の整数で、 CLI バインド・ファイルをデータベースに対してバインドするときに作成される、CLI ラージ・パッケージの数を指定します。
- CNULREQD
- このオプションは、LANGLEVELプリコンパイル・オプションに関連しています。 これは、C または C++ アプリケーションで作成されたバインド・ファイルの場合のみ有効です。 このバインド・オプションは、 Db2のサーバーではサポートされていません。
- NO
- アプリケーションは、LANGLEVELSAA1 C 文字列ホスト変数のヌル終端文字に関するプリコンパイル オプション。
- YES
- アプリケーションは、LANGLEVEL行方不明C 文字列ホスト変数のヌル終端文字に関するプリコンパイル オプション。
- COLLECTION schema-name
- パッケージ用の 128 バイトの収集 ID を指定します。 これを指定しなかった場合、パッケージを処理する際には、 ユーザーの許可 ID が使用されます。
- CONCURRENTACCESSRESOLUTION
- パッケージ内のステートメントに使用する並行アクセス解決を指定します。
- USE CURRENTLY COMMITTED
- データが更新または削除されたときに、データベース マネージャーが該当するスキャンに現在コミットされているバージョンのデータを使用できることを指定します。 挿入処理中の行はスキップできます。 この節は、有効な分離レベルがカーソル固定または読み取り固定である場合に適用され (読み取り固定の場合、それはコミットされていない挿入だけをスキップします)、そうでない場合は無視されます。 適用可能なスキャンには、読み取り専用スキャンがあり、読み取り専用でないステートメントと同様に、読み取り専用ステートメントの一部となり得る。 レジストリー変数 DB2_EVALUNCOMMITTED、 DB2_SKIPDELETED、および DB2_SKIPINSERTED の設定は、currently committed を使用するスキャンには適用されません。 ただし、これらのレジストリー変数の設定は、Currently Committed を使用しないスキャンには、今までどおり適用されます。
- WAIT FOR OUTCOME
- カーソル固定およびさらに上位のスキャンで、更新処理中または削除処理中のデータが検出されたときにはコミットまたはロールバックを待機するように指定します。 挿入処理中の行はスキップされません。 レジストリー変数 DB2_EVALUNCOMMITTED、 DB2_SKIPDELETEDおよびDB2_SKIPINSERTEDの設定は適用されなくなりました。
- DATETIME
- 使用する日付と時刻のフォーマットを指定する。
- DEF
- データベースのテリトリー・コードと対応する日時形式を使用します。
- EUR
- ヨーロッパの日時形式には IBM 標準を使用してください。
- ISO
- 国際標準化機構規格の日時形式を使用します。
- JIS
- 日本工業規格の日時形式を使用します。
- LOC
- データベースのテリトリー・コードと対応する地域別日時形式を使用します。
- USA
- IBM standard for U.S日時形式を使用してください。
- DBPROTOCOL
- 3 部構成の名前のステートメントによって識別されるリモート・サイトに接続するときに 使用するプロトコルを指定します。 Db2 for z/OS® でのみサポートされます。 サポートされるオプション値のリストについては、 Db2 for z/OSの資料を参照してください。
- DEC
- 小数の算術演算で使用する最大精度を指定する。 このプリコンパイル/bind オプションは、 Db2のサーバーではサポートされていません。 このオプションが指定されていない場合、DRDA サーバーは組み込みのデフォルト値を使用します。
- 15
- 10 進算術演算に 15 桁精度が使用されます。
- 31
- 10 進算術演算に 31 桁精度が使用されます。
- DECDEL
- 小数点および浮動小数点リテラルにおいて、ピリオド(.)とカンマ(,)のどちらを小数点指示子として使うかを指定する。 このプリコンパイル/bind オプションは、 Db2のサーバーではサポートされていません。 このオプションが指定されていない場合、DRDA サーバーは組み込みのデフォルト値を使用します。
- COMMA
- 小数点標識としてコンマ (,) を使用します。
- PERIOD
- 小数点標識としてピリオド (.) を使用します。
- DEGREE
- SMP システムで静的 SQL ステートメントを実行するための並列処理の度合いを指定します。 このオプションは、CREATE INDEX 並列処理には影響を与えません。
- 1
- ステートメントの実行に並列処理を使用しません。
- degree-of-parallelism
- ステートメントを実行できる並列度を指定する。 2 から 32 767 の間の値。
- ANY
- ステートメントの実行に、 データベース・マネージャーによって決定された度合いを使用した並列処理を含めることができることを指定します。
- DYNAMICRULES
- 許可 ID に使用される値の初期設定、および非修飾オブジェクト参照の暗黙的な修飾の、実行時に動的 SQL に適用される規則を定義します。
- RUN
- パッケージを実行するユーザーの許可 ID が動的 SQL ステートメントの許可検査に使用されるように指定します。 許可 ID は、動的 SQL ステートメント内の非修飾オブジェクト参照を暗黙的に修飾するためのデフォルトのパッケージ修飾子としても使用されます。 これはデフォルト値です。
- BIND
- 許可および修飾の静的 SQL に適用されるすべての規則が、 実行時に使用されるように指定します。 つまり、パッケージ所有者の許可 ID が動的 SQL の許可検査に使用され、 デフォルトのパッケージ修飾子が動的 SQL ステートメント内の非修飾オブジェクト参照の暗黙的な修飾に使用されます。
- DEFINERUN
- パッケージがルーチン・コンテキスト内で使用される場合、
ルーチン定義者の許可 ID が許可検査およびルーチン内の
動的 SQL ステートメント内の非修飾オブジェクト参照の暗黙的な修飾に使用されます。
パッケージがスタンドアロン・アプリケーションとして使われる場合、動的SQLステートメントは、パッケージが DYNAMICRULES RUNでバインドされたかのように処理されます。
- DEFINEBIND
- パッケージがルーチン・コンテキスト内で使用される場合、
ルーチン定義者の許可 ID が許可検査およびルーチン内の
動的 SQL ステートメント内の非修飾オブジェクト参照の暗黙的な修飾に使用されます。
パッケージがスタンドアロン・アプリケーションとして使われる場合、動的SQLステートメントは、パッケージがDYNAMICRULES BINDでバインドされたかのように処理されます。
- INVOKERUN
- パッケージがルーチン・コンテキスト内で使用される場合、
ルーチン起動時に有効だった現行のステートメント許可 ID が、
動的 SQL ステートメントの許可検査およびそのルーチン内の
動的 SQL ステートメント内の非修飾オブジェクト参照の暗黙的な修飾に使用されます。
パッケージがスタンドアロン・アプリケーションとして使われる場合、動的SQLステートメントは、パッケージが DYNAMICRULES RUNでバインドされたかのように処理されます。
- INVOKEBIND
- パッケージがルーチン・コンテキスト内で使用される場合、
ルーチン起動時に有効だった現行のステートメント許可 ID が、
動的 SQL ステートメントの許可検査およびそのルーチン内の
動的 SQL ステートメント内の非修飾オブジェクト参照の暗黙的な修飾に使用されます。
パッケージがスタンドアロン・アプリケーションとして使われる場合、動的SQLステートメントは、パッケージがDYNAMICRULES BINDでバインドされたかのように処理されます。
動的 SQL ステートメントは、 バインド動作を公開しているパッケージ内のパッケージ所有者の許可 ID を使用します。 したがって、パッケージのユーザーが受け取るべきでない権限を、 パッケージのバインド・プログラムに付与してはなりません。 同様に、定義動作を示すルーチンを定義する場合、動的ステートメントはルーチンの定義者の許可 ID を使用するため、ルーチンの定義者には、パッケージのユーザーが受け取るべきではない権限を付与してはなりません。
次の動的に準備されたSQLステートメントは、DYNAMICRULESRUNにバインドされていないパッケージでは使用できません:GRANT、REVOKE、ALTER、CREATE、DROP、COMMENT ON、RENAME、SET INTEGRITY、およびSET EVENTMONITORSTATE。
- ENCODING
- プランまたはパッケージ内の静的ステートメント内にあるすべてのホスト変数のエンコード方式を指定します。 Db2 for OS/390® でのみサポートされます。 サポートされるオプション値のリストについては、 Db2 for OS/390の資料を参照してください。
- EXPLAIN
- 各 SQL ステートメント用に選択したアクセス・プランに関する Explain 表の情報を、
パッケージに保管します。
- NO
- Explain 情報はキャプチャーされません。
- YES
- Explain 表には、静的ステートメントの場合は prep/bind 時に、追加バインド・ステートメントの場合は実行時に、選択されたアクセス・プランについての情報が取り込まれます。
パッケージがルーチンに使用されるもので、 パッケージに追加バインド・ステートメントが含まれる場合、 そのルーチンは MODIFIES SQL DATA として定義されなければなりません。 これが行われない場合、パッケージ内の追加バインド・ステートメントは ランタイム・エラーを生じます (SQLSTATE 42985)。
- REOPT
- 再最適化可能な追加バインド SQL ステートメントの Explain 情報が、実行時に各 Explain 表に入れられます。 さらに、CURRENT EXPLAIN MODE レジスターが NO に設定されていても、
Explain 情報は実行時に再最適化可能な動的 SQL ステートメント用に集められます。
パッケージがルーチンに使用される場合、 そのルーチンは MODIFIES SQL DATA として定義されなければなりません。 そうしなければ、パッケージ内の追加バインドおよび動的ステートメントは ランタイム・エラーを生じます (SQLSTATE 42985)。
- ONLY
- ONLYオプションは、実行権限を持たずにステートメントを説明することができる。 Explain 表にはデータが入りますが、永続的パッケージは作成されません。 バインドプロセス中に同じ名前とバージョンの既存のパッケージが検出された場合、ACTION REPLACEを指定しても、既存のパッケージは削除も置換もされません。 Explain 表の移植中にエラーが発生した場合、Explain 情報は、エラーを戻したステートメント、およびそれに続くどのステートメントに対しても追加されません。
- ALL
- 適格な静的 SQL ステートメントの Explain 情報が、
prep/bind 時に各 Explain 表に入れられます。 適格な追加バインド SQL ステートメントの Explain 情報が、実行時に各 Explain 表に入れられます。 さらに、CURRENT EXPLAIN MODE レジスターが NO に設定されている場合でも、適格な動的 SQL ステートメントの Explain 情報が実行時に収集されます。
パッケージがルーチンに使用される場合、 そのルーチンは MODIFIES SQL DATA として定義されなければなりません。 そうしなければ、パッケージ内の追加バインドおよび動的ステートメントは ランタイム・エラーを生じます (SQLSTATE 42985)。
- EXPLSNAP
- Explain 表に Explain スナップショット情報を保管します。
- NO
- Explain スナップショットはキャプチャーされません。
- YES
- Explain 表には、静的ステートメントの場合は prep/bind 時に、追加バインド・ステートメントの場合は実行時に、適格な各静的 SQL ステートメントの Explain スナップショットが入れられます。
パッケージがルーチンに使用されるもので、 パッケージに追加バインド・ステートメントが含まれる場合、 そのルーチンは MODIFIES SQL DATA として定義されなければなりません。 これが行われない場合、パッケージ内の追加バインド・ステートメントは ランタイム・エラーを生じます (SQLSTATE 42985)。
- REOPT
- 再最適化可能な追加バインド SQL ステートメントの Explain スナップショット情報が、実行時に各 Explain 表に入れられます。 さらに、CURRENT EXPLAIN SNAPSHOT レジスターが NO に設定されていても、
Explain スナップショット情報は実行時に再最適化可能な動的 SQL ステートメント用に集められます。
パッケージがルーチンに使用される場合、 そのルーチンは MODIFIES SQL DATA として定義されなければなりません。 そうしなければ、パッケージ内の追加バインドおよび動的ステートメントは ランタイム・エラーを生じます (SQLSTATE 42985)。
- ALL
- 適格な各静的 SQL ステートメントの Explain スナップショットが、
prep/bind 時に Explain 表内に入れられます。 適格な追加バインド SQL ステートメントの Explain スナップショット情報が、実行時に各 Explain 表に入れられます。 さらに、CURRENT EXPLAIN SNAPSHOTレジスターが
NO
に設定された場合でも、実行時に適格な動的SQLステートメントのexplainスナップショット情報が収集されます。パッケージがルーチンに使用される場合、 そのルーチンは MODIFIES SQL DATA として定義されなければなりません。 そうしなければ、パッケージ内の追加バインドおよび動的ステートメントは ランタイム・エラーを生じます (SQLSTATE 42985)。
- EXTENDEDINDICATOR
- 関連のあるプランまたはパッケージの実行時に、拡張された標識変数値を認識できるようにします。
- NO
- 拡張された標識変数値が認識されない。 標識変数は、通常標識変数です。負の標識変数値は NULL であることを暗黙に示し、正またはゼロの値は NULL 以外であることを暗黙に示します。 これがデフォルトの条件です。
- YES
- 拡張された標識変数値が認識される。 認識されない標識変数値を使用するか、サポートされない場所でデフォルトまたは未割り当ての標識変数ベースの値を使用すると、バインドされたステートメントの実行時に、 Db2 データベース・マネージャーはエラー・メッセージを生成します。
- FEDERATED
- パッケージ内の静的 SQL ステートメントがニックネームまたはフェデレーテッド・ビューを
参照するかどうかを指定します。 このオプションが指定されず、パッケージ内の
静的 SQL ステートメントがニックネームまたはフェデレーテッド・ビューを参照する場合は、
警告が返され、パッケージは作成されます。
- NO
- ニックネームまたはフェデレーテッド・ビューは、パッケージ内の静的 SQL ステートメントで 参照されません。 ニックネームまたはフェデレーテッド・ビューがこのパッケージの準備またはバインド・フェーズ中に 静的 SQL ステートメントで見つかった場合、エラーが返され、パッケージは作成 されません。
- YES
- ニックネームまたはフェデレーテッド・ビューは、パッケージ内の静的 SQL ステートメントで 参照が可能です。 ニックネームまたはフェデレーテッド・ビューがこのパッケージの準備またはバインド中に 静的 SQL ステートメントで見つからなかった場合、エラーまたは警告は返されず、パッケージは 作成されます。
- FEDERATED_ASYNCHRONY
- フェデレーテッド・サーバーが組み込み SQL を使用するプログラムのアクセス・プランでサポートする非同期表キュー (ATQ) の最大数を指定します。
- ANY
- オプティマイザーはアクセス・プラン用の ATQ の数を判別します。 オプティマイザーは、プラン内の適格な SHIP またはリモート・プッシュダウン演算子すべてに ATQ を割り当てます。 DB2_MAX_ASYNC_REQUESTS_PER_QUERYサーバー・オプションに指定された値は、非同期要求の数を制限します。
- number_of_atqs_in_the_plan
- プラン内の ATQ の数。 数値を 0 から 32767 の範囲で指定します。
- FUNCPATH
- 静的 SQL で、ユーザー定義の特殊タイプおよび機能を解析する際に使用する関数パスを指定します。 このオプションを指定しなかった場合、
デフォルトの関数パスは "SYSIBM"、"SYSFUN"、または USER になります。
ここで USER は USER 特殊レジスターの値です。
- schema-name
- SQL ID (通常または区切り)。 これは、アプリケーション・サーバーに存在するスキーマを識別します。 スキーマが存在する場合、プリコンパイル時やバインド時に妥当性検査は行われません。 同一スキーマは、関数パス内に一度しか存在できません。 スキーマ名 SYSPUBLIC は、関数パスには指定できません。 指定できるスキーマ数は、処理結果の関数パスの長さによって限定され、 2048 バイトを超えることはできません。 スキーマ SYSIBM は、明示的に指定する必要がありません。 関数パス内に含まれていなければ、最初のスキーマに暗黙的に想定されます。
- GENERIC "string"
- ターゲット・サーバーでサポートされているが、
BIND PACKAGE コマンドにも REBIND PACKAGE コマンドにも事前定義されていない
バインド・オプションを指定してパッケージをバインドすることをサポートします。 BIND または PRECOMPILE コマンド構文で事前定義されているバインド・オプションを指定する場合は、 GENERIC バインド・オプションを使用しないでください。 例えば、KEEPDYNAMIC などの事前定義のバインド・オプションを GENERIC バインド・オプションに指定しないでください。 GENERIC バインド・オプションの構文は次のとおりです。
generic "option1 value1 option2 value2 ..."
各オプションと値は、1 つ以上のブランク・スペースで区切らなければなりません。 例えば、次の GENERIC バインド・オプション構文を使用すると、OPT1、OPT2、および OPT3 のオプション値を指定してパッケージをバインドすることができます。generic "opt1 value1 opt2 value2 opt3 value3"
ストリングの最大長は 4096 バイトです。 各オプション名の最大長はストリングで 255 バイトです。
クライアントは、クライアント検証を行わずに BIND コマンドを Db2 サーバーに渡します。 Db2 サーバーは BIND コマンドを処理し、該当するメッセージを返します。
バージョン 10.5 フィックスパック 2 以降では、 Db2 for z/OS バージョン 11 以降のサーバーに接続する際に、 BIND コマンドの GENERIC オプションを使用してアプリケーション互換性特殊レジスター設定 (APPLCOMPAT) を指定できます。
Db2 for z/OS サーバーでサポートされる GENERIC オプションのリストについては、
Db2 クライアントからの Db2 for z/OS バインド・オプションの仕様
を参照してください。Db2 for IBM® i サーバーでサポートされている GENERIC オプションのリストについては、
「NLSS ソート・シーケンス、システム命名、別個の日時形式などのパッケージ・オプションをクライアントとは異なる方法」
の表 1 を参照してください。 - GRANT
- 注:「GRANT、「GRANT_GROUP、「GRANT_USER、「GRANT_ROLEオプションが複数指定された場合、最後に指定されたオプションのみが実行される。
- authid
- 指定したユーザー名、ロール名、またはグループ ID に EXECUTE 特権と BIND 特権を付与します。 SQL GRANT ステートメントで付与対象の authid のタイプを示す USER、GROUP、ROLE のいずれも指定されなかった場合は、GRANT ステートメントとその規則を使用してそのタイプが判別されます。 規則については、GRANT (Role) ステートメント (GRANT (Role) statement) を参照してください。
- PUBLIC
- PUBLIC に EXECUTE 特権と BIND 特権を付与します。
- GRANT_GROUP group-name
- 指定したグループ名に EXECUTE 特権と BIND 特権を付与します。
- GRANT_USER user-name
- EXECUTE および BIND 特権を指定されたユーザー名に付与します。
- GRANT_ROLE role-name
- 指定したロール名に EXECUTE 特権と BIND 特権を付与します。
- INSERT
- Db2 Enterprise Server Edition サーバーに対してプリコンパイルまたはバインドされるプログラムが、パフォーマンス向上のためにデータ挿入をバッファーに入れるように要求できるようにします。
- BUF
- アプリケーションからの挿入データをバッファリングすることを指定します。
- DEF
- アプリケーションからの挿入データをバッファリングしないことを指定します。
- ISOLATION
- このパッケージにバインドされるプログラムを、
他の実行プログラムの影響からどの程度分離できるかを指定します。
- CS
- カーソル固定を分離レベルとして指定します。
- NC
- コミットなし。 コミットメント制御が使用されないということを指定します。 この分離レベルは、 Db2ではサポートされていません。
- RR
- 反復可能読み取りを分離レベルとして指定します。
- RS
- 読み取り固定を分離レベルとして指定します。 読み取り固定は、パッケージ内での SQL ステートメントの実行を、 他のアプリケーションが読み取りおよび変更を行った行に対する処理から分離させます。
- UR
- 非コミット読み取りを分離レベルとして指定します。
- IMMEDWRITE
- グループ・バッファー・プールに従属するページセットまたはデータベース・パーティションに対する更新について、即時書き込みを行うかどうかを示します。 Db2 for OS/390 でのみサポートされます。 サポートされるオプション値のリストについては、 Db2 for OS/390の資料を参照してください。
- KEEPDYNAMIC
このパラメーターは、コミット・ポイントの後で動的 SQL ステートメントを保持するかどうかを指定します。
Db2 for z/OSでサポートされるオプション値のリストについては、 Db2 for z/OS の資料を参照してください。
Db2 バージョン 9.8 フィックスパック 2 以降では、新しいバインド操作を必要とせずにパッケージの KEEPDYNAMIC バインド・オプションの値を変更できるため、次のバインド操作が行われるまで不要な再コンパイルを回避できます。 KEEPDYNAMICバインドオプションは、準備されたステートメント関連ステートメントテキストとセクションがSQLコンテキストに保持される期間を制御し、動的SQLステートメントがCOMMITまたはROLLBACKの後に保持されるかどうかを指定します。
- YES
準備済みステートメントに関連付けられたステートメント・テキストとセクションが SQL コンテキストで無期限に保持されるように指示します。 動的 SQL ステートメントは複数のトランザクション間で保持されます。 KEEPDYNAMIC YESにバインドされたすべてのパッケージは、デフォルトで既存のパッケージキャッシュ動作と互換性があります。
- No
各作業単位の終わりに、準備済みステートメントに関連付けられたステートメント・テキストとセクションが SQL コンテキストで除去されるように指示します 。 KEEPDYNAMIC NOにバインドされたパッケージで準備された非アクティブな動的SQLステートメントは、COMMITまたはROLLBACK操作中にSQLコンテキストから削除されます。 ステートメントは、新しいトランザクションの中で再び準備される必要があります。 クライアント、ドライバー、またはアプリケーションは、再使用を望むすべての動的 SQL ステートメントを、新しい作業単位で再び準備する必要があります。 パッケージがリモート・アプリケーションによって実行される場合、準備されたステートメントの実行可能バージョンは、トランザクションが終了するとアプリケーションSQLコンテキストから切り離されます。
アクティブな動的 SQL ステートメントは、それらが非アクティブになる次の COMMIT または ROLLBACK 操作まで、保持される必要があります。 動的 SQL ステートメントがトランザクション境界でアクティブであることのできる、次のようなシチュエーションがあります。- WITH HOLD オプションを使って宣言されたカーソルが、コミット・ポイントで開いている。
- 動的 SQL ステートメントが COMMIT または ROLLBACK 操作を実行している。
- COMMIT または ROLLBACK 操作を実行するストアード・プロシージャーまたはユーザー定義関数を、動的 SQL ステートメントが呼び出す。
- MESSAGES message-file
- 警告メッセージ、エラー・メッセージ、 および完了状況メッセージの宛先を指定します。 メッセージ・ファイルは、バインドが正常であるかどうかによって作成されます。 メッセージ・ファイル名を指定しなかった場合、メッセージは標準出力に書き込まれます。 ファイルへの完全パスを指定しなかった場合は、現行ディレクトリーが使用されます。 なお、既存ファイルの名前を指定すると、そのファイルの内容は上書きされます。
- OPTHINT
- 照会最適化ヒントを静的 SQL に使用するかどうかを制御します。 Db2 for OS/390 でのみサポートされます。 サポートされるオプション値のリストについては、 Db2 for OS/390の資料を参照してください。
- OPTPROFILE optimization-profile-name
- パッケージ内のすべての静的ステートメントに使用される既存の最適化プロファイルの名前を指定します。 このオプションのデフォルト値は、
空ストリングです。 この値は CURRENT OPTIMIZATION PROFILE 特殊レジスターが NULL である DML ステートメントの動的準備のデフォルトとしても適用されます。 指定名が修飾されない場合、これはSQL IDであり、QUALIFIERバインド・オプションによって暗黙的に修飾されます。
BIND コマンドは最適化ファイルを処理せず、名前が構造的に有効であることだけを確認します。 したがって、最適化プロファイルが存在しないか無効である場合、最適化プロファイルを使用して DML ステートメントが最適化されるまで、理由コード 13 の SQL0437W 警告は発生しません。
- OS400NAMING
- Db2 for System i ® データにアクセスするときに使用する命名オプションを指定します。 Db2 for System i でのみサポートされます。 サポートされるオプション値のリストについては、 Db2 for IBM iの資料を参照してください。
- OWNER authorization-id
- パッケージ所有者の 128 バイトの許可 ID を指定します。 所有者は、パッケージに含まれるSQL文を実行するのに必要な権限を持っていなければなりません。 DBADM 権限を持つユーザーのみが、ユーザー ID 以外の許可 ID を指定できます。 デフォルト値は、プリコンパイル/バインド処理の呼び出し側の許可 ID です。 SYSIBM、SYSCAT、および SYSSTAT はこのオプションには無効な値です。 authorization-id はユーザーでなければなりません。 OWNERオプションで役割またはグループを指定できません。
- PATH
- 静的 SQL で、ユーザー定義の特殊タイプおよび機能を解析する際に使用する関数パスを指定します。 このオプションを指定しなかった場合、
デフォルトの関数パスは "SYSIBM"、"SYSFUN"、または USER になります。
ここで USER は USER 特殊レジスターの値です。
- schema-name
- SQL ID (通常または区切り)。 これは、アプリケーション・サーバーに存在するスキーマを識別します。 スキーマが存在する場合、プリコンパイル時やバインド時に妥当性検査は行われません。
- QUALIFIER qualifier-name
- パッケージに含まれる非修飾オブジェクトの 128 バイトの暗黙修飾子を指定します。 デフォルトは、OWNER が明示的に指定されているかどうかに関係なく、所有者の認証IDになります。
- QUERYOPT optimization-level
- パッケージに含まれるすべての静的 SQL ステートメントに必要な最適化レベルを指示します。 デフォルト値は 5 です。 SET CURRENT QUERY OPTIMIZATION ステートメントは、使用可能な最適化レベルの全範囲を説明します。
- RELEASE
- リソースを、各 COMMIT ポイントで解放するか、
アプリケーションの終了時に解放するかどうかを指示します。 この DRDA プリコンパイル/binD オプションは、 Db2ではサポートされていません。 Db2 for z/OS バージョン 10 以降のサーバーの場合、デフォルト値は DEALLOCATE です。
- COMMIT
- 各コミット点でリソースを解放します。 これは、動的 SQL ステートメントに使用されます。
- DEALLOCATE
- アプリケーションの終了時にだけリソースを解放します。
- SORTSEQ
- System iで使用するソート順序テーブルを指定します。 Db2 for IBM i でのみサポートされます。 サポートされるオプション値のリストについては、 Db2 for System iの資料を参照してください。
- SQLERROR
- エラーが起きた場合にパッケージあるいはバインド・ファイルを作成するかどうかを指示します。
- CHECK
- ターゲット・システムが、バインドされている SQL ステートメントの すべての構文、およびセマンティックの検査を行うことを指定します。 この処理の一部としてパッケージが作成されることはありません。 バインド中に、同じ名前とバージョンの既存のパッケージが検出された場合、ACTIONREPLACEが指定されても、既存のパッケージは削除も置換もされません。
- CONTINUE
- SQL ステートメントのバインド時にエラーが発生しても、パッケージを作成します。 許可または存在の理由でバインドに失敗したステートメントは、VALIDATE RUNも指定された場合、実行時に段階的にバインドできます。 実行時にこれらを実行しようとすると、エラー(SQLCODE -525、SQLSTATE 51015)が発生します。
- NOPACKAGE
- エラーを検出した場合、パッケージもバインド・ファイルも作成しません。
- REOPT
- Db2 がホスト変数、パラメーター・マーカー、グローバル変数、および特殊レジスターの値を使用して実行時にアクセス・パスを判別するようにするかどうかを指定します。 有効な値は以下のとおりです。
- NONE
- ホスト変数、パラメーター・マーカー、グローバル変数、または特殊レジスターを含む SQL ステートメントのアクセス・パスは、実際の値によって最適化されません。 これらの変数のデフォルトの推定値が使用され、 このプランがキャッシュされて使用されます。 これはデフォルト値です。
- ONCE
- 与えられたSQL文のアクセス・パスは、クエリが最初に実行されるときに、ホスト変数、パラメータ・マーカー、グローバル変数、または特別なレジスタの実際の値を使用して最適化されます。 このプランがキャッシュされて使用されます。
- ALWAYS
- 指定されたSQL文のアクセス・パスは、クエリが実行されるたびに既知のホスト変数、パラメータ・マーカー、グローバル変数、または特別なレジスタの値を使用して、常にコンパイルされ、再最適化されます。
- REOPT | NOREOPT VARS
- これらのオプションは、REOPT ALWAYSとREOPT NONEに置き換えられました。ただし、以前の互換性のために引き続きサポートされています。 Db2 がホスト変数、グローバル変数、パラメーター・マーカー、および特殊レジスターの値を使用して実行時にアクセス・パスを判別するようにするかどうかを指定します。 Db2 for OS/390 でのみサポートされます。 サポートされるオプション値のリストについては、 Db2 for OS/390の資料を参照してください。
- SQLWARN
- 警告が動的SQLステートメントのコンパイル(PREPAREまたはEXECUTE IMMEDIATEを介して)から返されるのか、describe処理(PREPARE ..を介して)から返されるのかを示します。INTO または DESCRIBE)。
- NO
- SQL コンパイラーから警告を戻しません。
- YES
- SQL コンパイラーから警告を戻します。
- STATICREADONLY
- 静的カーソルを READ ONLY または INSENSITIVE として扱うかどうかを指定します。
- NO
- すべての静的カーソルは、ステートメントテキストとLANGLEVELプリコンパイルオプションの設定に通常生成される属性を引き継ぎます。 これはデフォルト値です。
- YES
- FOR UPDATE または FOR READ ONLY 節を含まない静的カーソルは、 READ ONLY と見なされます。
- INSENSITIVE
- FOR UPDATE 節を含まない静的カーソルは、 READ ONLY または INSENSITIVE と見なされます。
- STRDEL
- SQL ステートメントで使用するストリング区切り文字として、
アポストロフィ (') または二重引用符 (") のどちらを使用するか指定します。 このプリコンパイル/bind オプションは、 Db2のサーバーではサポートされていません。 このオプションが指定されていない場合、DRDA サーバーは組み込みのデフォルト値を使用します。
- APOSTROPHE
- ストリング区切り文字として、アポストロフィ (') を使用します。
- QUOTE
- ストリング区切り文字として、二重引用符 (") を使用します。
- STRING_UNITS
- 文字データ・タイプとグラフィック・データ・タイプが静的 SQL ステートメントで明示的なストリング単位なしで使用された場合の、ストリング単位を指定します。 デフォルト値は、対象のデータベースの string_units データベース構成パラメーターの設定値に基づきます。
- SYSTEM
- この設定は、Unicode データベースでは以下の影響を与えます。
- CODEUNITS32 キーワードを指定せずに定義された CHAR、VARCHAR、および CLOB のデータ・タイプは、デフォルトの OCTETS になる。
- CODEUNITS32 キーワードを指定せずに定義された GRAPHIC、VARGRAPHIC、および DBCLOB のデータ・タイプは、デフォルトの CODEUNITS16 になる。
- CODEUNITS32 キーワードを指定せずに定義された CHAR、VARCHAR、および CLOB のデータ・タイプは、デフォルトの OCTETS になる。
- GRAPHIC、VARGRAPHIC、および DBCLOB のデータ・タイプには、2 バイトの暗黙的なストリング単位が保持される。
- CODEUNITS32
- この設定は、Unicode データベースにのみ有効で、以下の影響を与えます。
- BYTE または OCTETS キーワードを指定せずに定義された CHAR、VARCHAR、および CLOB のデータ・タイプは、デフォルトの CODEUNITS32 になる。
- CODEUNITS16 キーワードを指定せずに定義された GRAPHIC、VARGRAPHIC、および DBCLOB のデータ・タイプは、デフォルトの CODEUNITS32 になる。
- SYSTIMESENSITIVE
- 静的および動的 SQL ステートメントでのシステム期間テンポラル表への参照が、CURRENT TEMPORAL SYSTEM_TIME 特殊レジスターの値の影響を受けるかどうかを示します。
- YES
- システム期間テンポラル表への参照は、CURRENT TEMPORAL SYSTEM_TIME 特殊レジスターの値の影響を受けます。 この値はデフォルト値です。
- NO
- システム期間テンポラル表への参照は、CURRENT TEMPORAL SYSTEM_TIME 特殊レジスターの値の影響を受けません。
- TEXT label
- パッケージの記述。 最大長は 255 文字です。 また、デフォルト値はブランクです。 このプリコンパイル/bind オプションは、 Db2のサーバーではサポートされていません。
- TRANSFORM GROUP
- 静的 SQL ステートメントが、
ユーザー定義の構造化タイプの値をホスト・プログラムと交換するために使用する、
変換グループ名を指定します。 この変換グループは、動的 SQL ステートメントには使用されません。
また、パラメーターの交換や外部関数またはメソッドの結果にも使用されません。
- groupname
- SQL ID。長さは最大で 18 バイトです。 グループ名には、修飾子接頭部を含めることはできません。
また、接頭部 SYS はデータベースで使用するために予約されているので、
その接頭部は使用できません。 ホスト変数とやりとりする静的 SQL ステートメントでは、
構造化タイプの値の交換に使用する変換グループの名前は以下のようになります。
- TRANSFORM GROUPバインド・オプションのグループ名 (ある場合)
- 元のプリコンパイル時に指定されたTRANSFORM GROUPprepオプションのグループ名 (ある場合)
- DB2_PROGRAM グループ。 グループ名が DB2_PROGRAM の、特定のタイプに対する変換がある場合。
- 上にリストされた条件のいずれもない場合には、変換グループは使用されません。
静的 SQL ステートメントのバインド時には、 以下のエラーが発生する可能性があります。- SQLCODE yyyyy, SQLSTATE xxxxx: 変換が必要ですが、静的変換グループが選択されていません。
- SQLCODE yyyyy, SQLSTATE xxxxx: 選択された変換グループには、交換するデータ・タイプに必要な変換が含まれていません (入力変数用の TO SQL、出力変数用の FROM SQL)。
- SQLCODE yyyyy, SQLSTATE xxxxx: FROM SQL 変換の結果タイプは、出力変数のタイプと互換性がありません。または、TO SQL 変換のパラメーター・タイプは、入力変数のタイプと互換性がありません。
- VALIDATE
- データベース・マネージャー が許可エラーおよびオブジェクト未検出エラーをいつ検査するかを決定します。 この妥当性検査には、パッケージ所有者の許可 ID が使用されます。
- BIND
- プリコンパイル/バインド時に妥当性検査が実行されます。 オブジェクトが 1 つもない場合、または権限がまったく保持されていない場合、エラー・メッセージが作成されます。 SQLERROR CONTINUEが指定されると、エラーメッセージが表示されても、package/ bindファイルが生成されますが、エラーのあるステートメントは実行できません。
- RUN
- バインド時に妥当性検査が行われます。 すべてのオブジェクトが存在し、全権限が保持されていれば、
それ以上実行しても検査は行われません。
すべてのオブジェクトがない場合、またはプリコンパイル/バインド時にすべての権限が保持されない場合、SQLERROR CONTINUEオプションの設定に関係なく、警告メッセージが生成され、パッケージは正常にバインドされます。 ただし、プリコンパイル/バインド処理時に SQL ステートメントの権限検査と存在検査に障害が生じた場合、 実行時に再実行される可能性があります。
例
db2 bind myapp.bnd
バインド処理で生じたすべてのメッセージは、標準出力に送信されます。
使用上の注意
- ONCEまたはALWAYS値が指定されたREOPTオプションを使用してパッケージをバインドすると、静的および動的ステートメントのコンパイルとパフォーマンスが変わる可能性があります。
- バインド処理は、 アプリケーション・プログラムのソース・ファイルのプリコンパイル処理の一部として実行することもできますし、 別のプロセスとして後から実行することもできます。 バインドを別のプロセスとして実行するときは BIND を使用します。
- パッケージを作成するのに使われた名前はバインド・ファイルに保管されます。 その名前は、その名前が生成されたソース・ファイルの名前を基にして付けられます (既存のパスや拡張子は取り除かれます)。 たとえば、myapp.sqlと呼ばれるプリコンパイルされたソースファイルは、myapp.bndと呼ばれるデフォルトのバインドファイルとMYAPPのデフォルトのパッケージ名を生成します。 ただし、バインド・ファイル名とパッケージ名は、BINDFILEとPACKAGEオプションを使って、プリコンパイル時にオーバーライドできます。
- 既に存在しないスキーマ名にパッケージをバインドすると、 そのスキーマを暗黙に作成することになります。 スキーマの所有者は SYSIBM になります。 スキーマに対する CREATEIN 特権が PUBLIC に付与されます。
- BIND操作は、開始されたトランザクションの下で実行される。 バインドを実行した後、'BINDはCOMMITまたはROLLBACKを発行して現在のトランザクションを終了し、別のトランザクションを開始する。
- 致命的エラーまたは 100 を超えるエラーが生じた場合、バインドは停止します。 致命的エラーが生じた場合、ユーティリティーは処理を停止させ、 全ファイルのクローズを試み、そのパッケージを廃棄します。
- パッケージがバインド動作を示す場合、以下のようになる:
- BIND オプション OWNER の暗黙的または明示的な値は、動的 SQL ステートメントの許可検査に使用されます。
- BIND オプション QUALIFIER の暗黙的または明示的な値は、 動的 SQL ステートメント内の非修飾オブジェクトを修飾するための暗黙的修飾子として使用されます。
- 特殊レジスター CURRENT SCHEMA の値は、修飾には影響しません。
- 単一の接続中に複数のパッケージが参照される場合、それらのパッケージに準備されたすべての動的SQLステートメントは、その特定のパッケージと適用環境のDYNAMICRULESオプションの指定動作を示します。
- 表示されるパラメータSQL0020Wメッセージはエラーとして正しく記録され、メッセージに示されているとおりに無視されます。
- SQL文にエラーが見つかり、BINDオプションSQLERROR続くが指定された場合、ステートメントは無効としてマークされます。 この SQL ステートメントの状態を変えるためには、さらに別の BIND を発行する必要があります。 暗黙的および明示的な再バインドでは、無効なステートメントの状態は変わりません。 パッケージにはVALIDATE走る再バインド中にオブジェクトまたは権限の問題があるかどうかに応じて、ステートメントは暗黙的および明示的な再バインドにわたって静的バインドから増分バインドに、または増分バインドから静的バインドに変更できます。
- パッケージをバインドするために使用された認可識別子に付与されたロールからの権限(OWNERパッケージをバインドするときに、バインド オプションまたは PUBLIC への指定が考慮されます。 パッケージのバインドに使用される許可 ID がメンバーであるグループから取得したロールは使用されません。
- 組み込みSQLプログラムでは、バインド・オプションが明示的に指定されない場合、パッケージの静的ステートメントはfederated_async構成パラメーターにバインドされます。 FEDERATED_ASYNCHRONY バインド・オプションが明示的に指定された場合、その値はパッケージのバインドに使われ、特殊レジスターの初期値でもあります。 指定されていない場合、データベース・マネージャー構成パラメーターの値が特殊レジスターの初期値として使用されます。 FEDERATED_ASYNCHRONYバインド・オプションは、明示的に設定された場合にのみ動的SQLに影響します。
- FEDERATED_ASYNCHRONYバインド・オプションの値は、SYSCAT.PACKAGESカタログ表のFEDERATED_ASYNCHRONY列に記録されます。 バインド・オプションが明示的に指定されていない場合は、 federated_async 構成パラメーターの値が使用され、カタログの FEDERATED_ASYNCHRONY 列に
-2
の値が表示されます。 - パッケージのバインド時に BIND オプション FEDERATED_ASYNCHRONY が明示的に指定されていないと、 そのパッケージが暗黙的または明示的に再バインドされる場合、パッケージの再バインドには federated_async 構成パラメーターの現行値が使用されます。
- もしNULLIDパッケージが存在しないか、古くなっているか、バインドされていないため、実行中BIND他のコレクションでは、暗黙の再バインドのNULLIDパッケージ。 デフォルトでないコレクションIDを持つパッケージをバインドするには、'NULLIDパッケージを明示的にバインドする必要があります。