コマンド解説書

BIND

バインド・ユーティリティーを呼び出すことにより、 事前コンパイラーに生成されるバインド・ファイルに SQL ステートメントを保管し、 データベースに保管されるパッケージを作成します。

効力範囲

このコマンドは、db2nodes.cfg 中のどのノードからでも発行できます。 実行すると、カタログ・ノードのデータベース・カタログが更新されます。 その影響はすべてのノードから見えます。

許可

以下のどれかが必要です。

ユーザーには、アプリケーション内の静的 SQL ステートメントをコンパイルするのに必要な特権もすべて必要になります。 グループに付与された特権は、静的ステートメントの許可検査では使用されません。 ユーザーに sysadm 権限があってバインドを完成させる明示特権がない場合、 データベース・マネージャーは、明示的な dbadm 権限を自動的に付与します。

必須接続

データベース。 暗黙接続が可能な場合には、省略時データベースへの接続が確立されます。

コマンド構文

DB2 の場合

>>-BIND--filename----+-------------------------+---------------->
                     |           .-UNAMBIG--.  |
                     '-BLOCKING--+-ALL------+--'
                                 '-NO-------'
 
>-----+-----------------------+---+--------------------------+-->
      '-CLIPKG--cli-packages--'   '-COLLECTION--schema-name--'
 
>-----+---------------------+----------------------------------->
      |           .-DEF--.  |
      '-DATETIME--+-EUR--+--'
                  +-ISO--+
                  +-JIS--+
                  +-LOC--+
                  '-USA--'
 
>-----+------------------------------------+-------------------->
      |         .-1---------------------.  |
      '-DEGREE--+-degree-of-parallelism-+--'
                '-ANY-------------------'
 
>-----+-------------------------+---+-------------------+------->
      |               .-RUN--.  |   |          .-NO--.  |
      '-DYNAMICRULES--+-BIND-+--'   '-EXPLAIN--+-ALL-+--'
                                               '-YES-'
 
>-----+--------------------+---+---------------------+---------->
      |           .-NO--.  |   |            .-NO--.  |
      '-EXPLSNAP--+-ALL-+--'   '-FEDERATED--+-YES-+--'
                  '-YES-'
 
>-----+-------------------------------+------------------------->
      |           .-,--------------.  |
      |           V                |  |
      '-FUNCPATH-----schema-name---+--'
 
>-----+--------------------+---+--------------------------+----->
      '-GRANT--+-authid-+--'   '-GRANT_GROUP--group-name--'
               '-PUBLIC-'
 
>-----+------------------------+---+-------------------+-------->
      '-GRANT_USER--user-name--'   |         .-DEF--.  |
                                   '-INSERT--+-BUF--+--'
 
>-----+---------------------+---+-------------------------+----->
      |            .-CS--.  |   '-MESSAGES--message-file--'
      '-ISOLATION--+-RR--+--'
                   +-RS--+
                   '-UR--'
 
>-----+--------------------------+------------------------------>
      '-OWNER--authorization-id--'
 
>-----+----------------------------+---------------------------->
      '-QUALIFIER--qualifier-name--'
 
>-----+-------------------------------+------------------------->
      '-QUERYOPT--optimization-level--'
 
>-----+---------------------------+---+--------------------+---->
      |           .-NOPACKAGE--.  |   |          .-YES--.  |
      '-SQLERROR--+-CHECK------+--'   '-SQLWARN--+-NO---+--'
                  '-CONTINUE---'
 
>-----+---------------------+---+-----------------------------+-><
      |           .-RUN--.  |   '-TRANSFORM GROUP--groupname--'
      '-VALIDATE--+-BIND-+--'
 

DRDA の場合

>>-BIND--filename----------------------------------------------->
 
>-----+----------------------------------------------------------------------------+>
      '-ACTION--+-ADD-----------------------------------------------------------+--'
                | .-REPLACE-.                                                   |
                '-+---------+--+-------------------+---+----------------------+-'
                               |         .-YES--.  |   '-REPLVER--version-id--'
                               '-RETAIN--+-NO---+--'
 
>-----+-------------------------+---+-----------------------+--->
      |           .-UNAMBIG--.  |   '-CCSIDG--double-ccsid--'
      '-BLOCKING--+-ALL------+--'
                  '-NO-------'
 
>-----+----------------------+---+---------------------+-------->
      '-CCSIDM--mixed-ccsid--'   '-CCSIDS--sbcs-ccsid--'
 
>-----+------------------------+---+-----------------------+---->
      |          .-DEFAULT--.  |   '-CLIPKG--cli-packages--'
      '-CHARSUB--+-BIT------+--'
                 +-MIXED----+
                 '-SBCS-----'
 
>-----+---------------------+---+--------------------------+---->
      |           .-YES--.  |   '-COLLECTION--schema-name--'
      '-CNULREQD--+-NO---+--'
 
>-----+----------------------------+---+--------------+--------->
      |  (1)             .-DEF--.  |   '-DEC--+-15-+--'
      '--------DATETIME--+-EUR--+--'          '-31-'
                         +-ISO--+
                         +-JIS--+
                         +-LOC--+
                         '-USA--'
 
>-----+----------------------+---------------------------------->
      |         .-PERIOD--.  |
      '-DECDEL--+-COMMA---+--'
 
>-----+-------------------------------------------+------------->
      |  (2)           .-1---------------------.  |
      '--------DEGREE--+-degree-of-parallelism-+--'
                       '-ANY-------------------'
 
>-----+---------------------------+----------------------------->
      |               .-RUN----.  |
      '-DYNAMICRULES--+-BIND---+--'
                      +-DEFINE-+
                      '-INVOKE-'
 
>-----+--------------------------+---+---------------------+---->
      |  (3)            .-NO--.  |   |            .-NO--.  |
      '--------EXPLAIN--+-YES-+--'   '-FEDERATED--+-YES-+--'
 
>-----+------------------+---+--------------------+------------->
      '-GENERIC--string--'   '-GRANT--+-authid-+--'
                                      '-PUBLIC-'
 
>-----+--------------------------+---+------------------------+->
      '-GRANT_GROUP--group-name--'   '-GRANT_USER--user-name--'
 
>-----+-------------------+---+---------------------+----------->
      |         .-DEF--.  |   |            .-CS--.  |
      '-INSERT--+-BUF--+--'   '-ISOLATION--+-NC--+--'
                                           +-RR--+
                                           +-RS--+
                                           '-UR--'
 
>-----+-------------------------+------------------------------->
      '-MESSAGES--message-file--'
 
>-----+--------------------------+------------------------------>
      '-OWNER--authorization-id--'
 
>-----+----------------------------+---------------------------->
      '-QUALIFIER--qualifier-name--'
 
>-----+--------------------------+------------------------------>
      |          .-COMMIT-----.  |
      '-RELEASE--+-DEALLOCATE-+--'
 
>-----+--------------------------+---+--------------+----------><
      |         .-APOSTROPHE--.  |   '-TEXT--label--'
      '-STRDEL--+-QUOTE-------+--'
 

注:

  1. DATETIME DEF オプションは DRDA ではサポートされておらず、 DB2 コネクトを経て ISO にマップされます。

  2. DEGREE オプションは DRDA レベル 2 のアプリケーション・サーバーでしかサポートされていません。

  3. DRDA は、EXPLAIN オプションが値 YES または NO を持つように定義します。 EXPLAIN オプションを指定しないと、これは DRDA "EXPLAIN NO" にマップされます。

コマンド・パラメーター

filename
アプリケーション・プログラムをプリコンパイルしたときに生成されたバインド・ファイル、 または複数のバインド・ファイル名を含むリスト・ファイルの名前を指定します。 バインド・ファイルの拡張子は .bnd です。 また、全パス名も指定できます。

リスト・ファイルを指定した場合、その名前の先頭文字は @ 文字でなければなりません。 リスト・ファイルには、数行のバインド・ファイル名を含めることができます。 同一行にリストするバインド・ファイルはプラス (+) 文字で区切る必要がありますが、 各行の先頭ファイルの前や最後のファイルの後に + を挿入することはできません。 たとえば、次のように指定します。

   /u/smith/sqllib/bnd/@all.lst

これは、次のバインド・ファイルを含むリスト・ファイルです。

   mybind1.bnd+mybind.bnd2+mybind3.bnd+
   mybind4.bnd+mybind5.bnd+
   mybind6.bnd+
   mybind7.bnd

ACTION
パッケージを追加または置換できるかどうかを示します。 なお、DB2 はこの DRDA プリコンパイル / バインド・オプションをサポートしません。

ADD
名前付きパッケージが存在せず、新規パッケージを作成するということを指示します。 すでにパッケージがある場合は、実行停止状態となり、診断エラー・メッセージが戻されます。

REPLACE
既存のパッケージを、ロケーション、コレクション、 およびパッケージ名が同じ新規パッケージと置き換えることを指示します。

RETAIN
パッケージを置き換えたときに EXECUTE 権限が保持されるかどうかを指示します。 パッケージの所有権を変更した場合、 新規所有者は前のパッケージ所有者に BIND 権限と EXECUTE 権限を付与します。

NO
パッケージを置き換えたとき、EXECUTE 権限を保持しません。

YES
パッケージを置き換えたとき、EXECUTE 権限を保持します。

REPLVER version-id
特定のバージョンのパッケージを置き換えます。 バージョン識別子は、どのバージョンのパッケージを置き換えるのかを指定するものです。 最大長は 254 文字です。

BLOCKING
行のブロック化については、 管理の手引き または アプリケーション開発の手引き を参照してください。

ALL
次のカーソルをブロック化することを指定します。
  • 読み取り専用カーソル。
  • FOR UPDATE OF と指定されていないカーソル。

未確定のカーソルは、読み取り専用として扱われます。

NO
どのカーソルもブロック化しないことを指定します。 未確定のカーソルは、更新可能として扱われます。

UNAMBIG
次のカーソルをブロック化することを指定します。
  • 読み取り専用カーソル。
  • FOR UPDATE OF と指定されていないカーソル。

未確定のカーソルは、更新可能として扱われます。

CCSIDG double-ccsid
CREATE および ALTER TABLE SQL ステートメントの文字列定義で、 2 バイト文字用のコード化文字セット識別子 (CCSID) (特定の CCSID 文節は使用しない) を指定する整数。 なお、DB2 はこの DRDA プリコンパイル / バインド・オプションをサポートしません。 このオプションを指定しないと、DRDA サーバーは、システムが定義した省略時値を使用します。

CCSIDM mixed-ccsid
CREATE および ALTER TABLE SQL ステートメントの文字列定義で、 混合バイト文字用のコード化文字セット識別子 (CCSID) (特定の CCSID 文節は使用しない) を指定する整数。 なお、DB2 はこの DRDA プリコンパイル / バインド・オプションをサポートしません。 このオプションを指定しないと、DRDA サーバーは、システムが定義した省略時値を使用します。

CCSIDS sbcs-ccsid
CREATE および ALTER TABLE SQL ステートメントの文字列定義で、 1 バイト文字用のコード化文字セット識別子 (CCSID) (特定の CCSID 文節は使用しない) を指定する整数。 なお、DB2 はこの DRDA プリコンパイル / バインド・オプションをサポートしません。 このオプションを指定しないと、DRDA サーバーは、システムが定義した省略時値を使用します。

CHARSUB
CREATE および ALTER TABLE SQL ステートメントの列定義に使用する、 省略時の文字サブタイプを指定します。 なお、DB2 はこの DRDA プリコンパイル / バインド・オプションをサポートしません。

BIT
明示的にサブタイプを指定しなかった場合、 すべての新規文字列に FOR BIT DATA SQL 文字サブタイプが使用されます。

DEFAULT
明示的にサブタイプを指定しなかった場合、 すべての新規文字列にターゲット・システムが定義した省略時サブタイプが使用されます。

MIXED
明示的にサブタイプを指定しなかった場合、 すべての新規文字列に FOR MIXED DATA SQL 文字サブタイプが使用されます。

SBCS
明示的にサブタイプを指定しなかった場合、 すべての新規文字列に FOR SBCS DATA SQL 文字サブタイプが使用されます。

CLIPKG cli-packages
3 〜 30 の整数で、 CLI バインド・ファイルをデータベースに対してバインドするときに作成される、CLI ラージ・パッケージの数を指定します。 CLI バインド・ファイルとパッケージの詳細については、 コール・レベル・インターフェースの手引きおよび解説書を参照してください。

CNULREQD
このオプションは DRDA でサポートされていない langlevel プリコンパイル・オプションと関連します。 これは、C または C++ アプリケーションで作成されたバインド・ファイルの場合のみ有効です。 この DRDA バインド・オプションは、DB2 ではサポートされていません。

NO
C ストリング・ホスト変数中の NULL 終止符に関して、 langlevel SAA1 プリコンパイル・オプションに基づいてアプリケーションがコード化された場合です。

YES
C ストリング・ホスト変数中の NULL 終止符に関して、 langlevel MIA プリコンパイル・オプションに基づいてアプリケーションがコード化された場合です。

COLLECTION schema-name
パッケージ用の 30 文字の収集識別子を指定します。 これを指定しなかった場合、パッケージを処理する際には、 ユーザーの許可識別子が使用されます。

DATETIME
使用する日時形式を指定します。 日時形式の詳細については、SQL 解説書 を参照してください。

DEF
データベースの国別コードと対応する日時形式を使用します。

EUR
IBM 欧州規格の日時形式を使用します。

ISO
国際標準化機構規格の日時形式を使用します。

JIS
日本工業規格の日時形式を使用します。

LOC
データベースの国別コードと対応する地域別日時形式を使用します。

USA
IBM 米国規格の日時形式を使用します。

DEC
10 進算術演算に使用する最大精度を指定します。 なお、DB2 はこの DRDA プリコンパイル / バインド・オプションをサポートしません。 このオプションを指定しないと、DRDA サーバーは、システムが定義した省略時値を使用します。

15
10 進算術演算に 15 桁精度が使用されます。

31
10 進算術演算に 31 桁精度が使用されます。

DECDEL
10 進数および浮動小数点リテラル中で 10 進小数点標識としてピリオド (.) またはコンマ (,) のどちらかを指定します。 なお、DB2 はこの DRDA プリコンパイル / バインド・オプションをサポートしません。 このオプションを指定しないと、DRDA サーバーは、システムが定義した省略時値を使用します。

COMMA
10 進小数点標識としてコンマ (,) を使用します。

PERIOD
10 進小数点標識としてピリオド (.) を使用します。

DEGREE
SMP システムで静的 SQL ステートメントを実行するための並列処理の程度を指定します。 このオプションは、CREATE INDEX 並列処理には影響を与えません。

1
ステートメントの実行に並列処理を使用しません。

degree-of-parallelism
ステートメントを実行する際の並列処理の程度を指定します。 値の範囲は 2 〜 32 767 です。

ANY
ステートメントの実行時にデータベース・マネージャーで判別した程度で並列処理を行うよう指定します。

DYNAMICRULES
許可 ID に使用される値の初期設定、および未修飾オブジェクト参照の暗黙的な修飾の、 実行時の動的 SQL に適用される規則を定義します。

RUN
パッケージを実行するユーザーの許可 ID が使用されるように指定します。 これが省略時値です。

BIND
許可および修飾の静的 SQL に適用されるすべての規則が、 実行時に使用されるように指定します。 つまり、パッケージ所有者の許可 ID が動的 SQL の権限検査に使用され、 省略時のパッケージ修飾子が動的 SQL ステートメント内の未修飾オブジェクト参照の暗黙的な修飾に使用されます。

このオプションを指定してパッケージをバインドする場合、 パッケージのバインダーはパッケージのユーザーが受け取るべきでない許可を持つことはできません。 動的 SQL ステートメントがパッケージ所有者の許可 ID を使用するためです。 次の動的な準備済み SQL ステートメントは、 このオプションを指定してバインドされているパッケージ内では使用できません。 GRANT、REVOKE、ALTER、CREATE、DROP、COMMENT ON、RENAME、SET CONSTRAINTS、 および SET EVENT MONITOR STATE です。

DEFINE
UDF またはストアード・プロシージャー内にある動的 SQL ステートメントの実行に使用する許可識別子が、 UDF またはストアード・プロシージャーの定義者であるということを指示します。 このオプションは、DB2 ではサポートされません。

INVOKE
UDF またはストアード・プロシージャー内にある動的 SQL ステートメントの実行に使用する許可識別子が、 UDF またはストアード・プロシージャーの呼び出し元であるということを指示します。 このオプションは、DB2 ではサポートされません。

EXPLAIN
各 SQL ステートメント用に選択したアクセス・プランに関する Explain 表の情報を、 パッケージに保管します。 DRDA では、このオプションの ALL 値がサポートされていません。

NO
Explain 情報はキャプチャーされません。

YES
Explain 表には、静的ステートメントの場合は prep/bind 時間 で、 増分バインド・ステートメントの場合はランタイムで、 選択されたアクセス・プランについての情報が取り込まれます。

ALL
適格な静的 SQL ステートメントの Explain 情報が、 prep/bind 時間で各 Explain 表に入れられます。 適格な増分バインド SQL ステートメントの Explain 情報が、 ランタイムで各 Explain 表に入れられます。 さらに、CURRENT EXPLAIN SNAPSHOT レジスターが NO に設定されていても、 Explain 情報は実行時に適格な動的 SQL ステートメント用に集められます。 特殊レジスターの詳細については、SQL 解説書 を参照してください。

注:DRDA では、EXPLAIN のこの値 (ALL) はサポートされていません。

EXPLSNAP
Explain 表に Explain スナップショットを保管します。 この DB2 プリコンパイル / バインド・オプションは、DRDA ではサポートされていません。

NO
Explain スナップショットはキャプチャーされません。

YES
Explain 表には、静的ステートメントの場合は prep/bind 時間 で、 増分バインド・ステートメントの場合はランタイムで、 適格な各静的 SQL ステートメントの Explain スナップショットが、Explain 表内に入れられます。

ALL
適格な各静的 SQL ステートメントの Explain スナップショットが、 prep/bind 時間 で Explain 表内に入れられます。 適格な増分バインド SQL ステートメントの Explain スナップショット情報が、 ランタイムで各 Explain 表に入れられます。 さらに、CURRENT EXPLAIN SNAPSHOT レジスターが NO に設定されていても、 Explain スナップショット情報は実行時に適格な動的 SQL ステートメント用に集められます。 特殊レジスターの詳細については、SQL 解説書 を参照してください。

FEDERATED
パッケージ内の静的 SQL ステートメントが、 通称または統合視点を参照するかどうかを指定します。 このオプションを指定しており、通称または統合視点が参照されない場合、 エラーが戻され、パッケージは作成されません。 このオプションが指定されず、 通称または統合視点がパッケージ内の静的ステートメントによって参照される場合、 エラーが戻され、パッケージは作成されません。

NO
ユーティリティーは DB2 ユニバーサル・データベースに接続します。 これが省略時値です。

YES
ユーティリティーは DB2 統合システムにアクセスします。

FUNCPATH
静的 SQL で、ユーザー定義の個別タイプおよび機能を解析する際に使用する機能パスを指定します。 このオプションを指定しなかった場合、 省略時の機能パスは "SYSIBM"、"SYSFUN"、または USER になります。 この DB2 プリコンパイル / バインド・オプションは、DRDA ではサポートされていません。

schema-name
SQL 識別子 (通常または区切り)。 これは、アプリケーション・サーバーに存在するスキーマを識別します。 スキーマが存在する場合、プリコンパイル時やバインド時に妥当性検査は行われません。 同一スキーマは、機能パス内に一度しか存在できません。 指定できるスキーマ数は、処理結果の機能パスの長さによって限定され、 254 バイトを超えることはできません。 スキーマ SYSIBM は、明示的に指定する必要がありません。 機能パス内に含まれていなければ、最初のスキーマに暗黙的に想定されます。 詳細については、SQL 解説書 を参照してください。

GENERIC string
宛先 DRDA データベースに新規バインド・オプションを渡す手段を提供します。 宛先データベースで定義されていても、 ローカル・コマンドで認識されない新規バインド・オプションをサポートします。 BINDまたは PRECOMPILE PROGRAM定義されている バインド・オプションを渡すようにするには、このオプションを使用しないでください。 このオプションは、動的 SQL のパフォーマンスをかなり向上させることができます。 構文は次のとおりです。

   generic "option1 value1 option2 value2 ..."

各オプションと値は、1 つまたは複数のブランク・スペースで区切らなければなりません。 たとえば、宛先 DRDA データベースが DB2 MVS バージョン 5 の場合、次のようにします。

   generic "keepdynamic yes"

こうして、新規 keepdynamic YES オプションは PRECOMPILE PROGRAM または BIND コマンドでローカルに定義されてはいませんが、バインドできます。

ストリングの最大長は 1023 バイトです。 この DRDA バインド・オプションは、現在 DB2 MVS バージョン 5 のみでサポートされています。 DB2 ではサポートされていません。

GRANT

authid
指定したユーザー名またはグループ ID に EXECUTE 特権と BIND 特権を付与します。

PUBLIC
PUBLIC に EXECUTE 特権と BIND 特権を付与します。

GRANT_GROUP group-name
指定したグループ ID に EXECUTE 特権と BIND 特権を付与します。

GRANT_USER user-name
指定したユーザー名に EXECUTE 特権と BIND 特権を付与します。

INSERT
DB2 エンタープライズ拡張エディション・サーバーへプリコンパイルまたはバインドされているプログラムが、 パフォーマンス向上のために挿入データをバッファリングすることを要求できるようにします。

BUF
アプリケーションからの挿入データをバッファリングすることを指定します。

DEF
アプリケーションからの挿入データをバッファリングしないことを指定します。

ISOLATION
このパッケージにバインドされるプログラムを、 他の実行プログラムの影響からどの程度分離できるかを指定します。 分離レベルの詳細については、SQL 解説書 を参照してください。

CS
分離レベルとしてカーソル固定を指定します。

NC
コミットしません。 コミット制御が使用されないということを指定します。 なお、DB2 はこの分離レベルをサポートしません。

RR
分離レベルとして反復可能読み取りを指定します。

RS
分離レベルとして読み取り固定を指定します。 読み取り固定は、パッケージ内での SQL ステートメントの実行を、 他のアプリケーションが読み取りおよび変更を行った行に対する処理から分離させます。

UR
分離レベルとして非コミット読み取りを指定します。

MESSAGES message-file
警告メッセージ、エラー・メッセージ、 および完了状況メッセージの宛先を指定します。 メッセージ・ファイルは、バインドが正常であるかどうかによって作成されます。 メッセージ・ファイル名を指定しなかった場合、メッセージは標準出力に書き込まれます。 ファイルへの完全パスを指定しなかった場合は、現行ディレクトリーが使用されます。 なお、既存ファイルの名前を指定すると、そのファイルの内容は上書きされます。

OWNER authorization-id
パッケージ所有者の 30 文字の許可識別子を指定します。 その所有者には、パッケージに含まれる SQL ステートメントを実行するための特権が必要です。 SYSADM または DBADM 許可を持つユーザーのみが、ユーザー ID 以外の許可識別子を指定できます。 省略時値は、プリコンパイル / バインド処理の 1 次許可 ID です。 SYSIBM、SYSCAT、および SYSSTAT はこのオプションには無効な値です。

QUALIFIER qualifier-name
パッケージに含まれる未修飾オブジェクトの 30 文字の暗黙修飾子を指定します。 owner が明示的に指定されていれば、 その所有者の許可 ID が省略時 ID になります。

QUERYOPT optimization-level
パッケージに含まれるすべての静的 SQL ステートメントに必要な最適化レベルを指示します。 省略時値は 5 です。 使用可能な最適化レベルの範囲の詳細については、 SQL 解説書 の SET CURRENT QUERY OPTIMIZATION ステートメントを参照してください。 この DB2 プリコンパイル / バインド・オプションは、DRDA ではサポートされていません。

RELEASE
リソースを、各 COMMIT ポイントで解放するか、 アプリケーションの終了時に解放するかどうかを指示します。 なお、DB2 はこの DRDA プリコンパイル / バインド・オプションをサポートしません。

COMMIT
各コミット点でリソースを解放します。 これは、動的 SQL ステートメントに使用されます。

DEALLOCATE
アプリケーションの終了時にだけリソースを解放します。

SQLERROR
エラーを検出した場合に、 パッケージまたはバインド・ファイルを作成するかどうかを指示します。

CHECK
ターゲット・システムがすべての構文を実行し、 バインドしている SQL ステートメントの意味を調べるということを指定します。 この処理の一部としてパッケージが作成されることはありません。 バインド中に、名前とバージョンが同じ既存パッケージを検出した場合、 その既存パッケージはドロップも置換 (ACTION REPLACE を指定した場合) もされません。

CONTINUE
SQL ステートメントのバインド時にエラーが発生しても、パッケージを作成します。 許可または存在などの理由でバインドに失敗したこれらのステートメントは、 VALIDATE RUN も指定されている場合は、実行時に増分でバインドすることができます。 ランタイムでこれらのステートメントを実行しようとすると、 エラー (SQLCODE -525, SQLSTATE 51015) が生成されます。

NOPACKAGE
エラーを検出した場合、パッケージもバインド・ファイルも作成しません。

SQLWARN
動的 SQL ステートメントの完了時 (PREPARE または EXECUTE IMMEDIATE を通して)、 または記述処理時 (PREPARE...INTO または DESCRIBE を通して) に警告を戻すかどうかを指示します。 この DB2 プリコンパイル / バインド・オプションは、DRDA ではサポートされていません。

NO
SQL コンパイラーから警告を戻しません。

YES
SQL コンパイラーから警告を戻します。

注:SQLCODE +238 は例外です。 これは、SQLWARN オプションの値が何であろうと戻されます。

STRDEL
SQL ステートメントで使用するストリング区切り文字として、 アポストロフィ (') または二重引用符 (") のどちらを使用するか指定します。 なお、DB2 はこの DRDA プリコンパイル / バインド・オプションをサポートしません。 このオプションを指定しないと、DRDA サーバーは、システムが定義した省略時値を使用します。

APOSTROPHE
ストリング区切り文字として、アポストロフィ (') を使用します。

QUOTE
ストリング区切り文字として、二重引用符 (") を使用します。

TEXT label
パッケージの記述。 最大長は 255 文字です。 また、省略時値はブランクです。 なお、DB2 はこの DRDA プリコンパイル / バインド・オプションをサポートしません。

TRANSFORM GROUP
静的 SQL ステートメントが、 ユーザー定義の構造型の値をホスト・プログラムと交換するために使用する、 変換グループ名を指定します。 この変換グループは、動的 SQL ステートメントには使用されません。 また、パラメーターの交換や外部関数またはメソッドの結果にも使用されません。

groupname
SQL 識別子。長さは最大で 18 文字です。 グループ名には、修飾子接頭部を含めることはできません。 また、接頭部 SYS はデータベースで使用するために予約されているので、 その接頭部は使用できません。 ホスト変数とやりとりする静的 SQL ステートメントでは、 構造型の値の交換に使用する変換グループの名前は以下のようになります。
  • TRANSFORM GROUP バインド・オプション内のグループ名 (もしあれば)
  • TRANSFORM GROUP 準備オプション内のグループ名。 最初の事前コンパイル時に指定したとおりのもの (もしあれば)
  • DB2_PROGRAM グループ。 グループ名が DB2_PROGRAM の、特定のタイプに対する変換がある場合。
  • 上記のいずれの条件もない場合には、変換グループは使用されません。

静的 SQL ステートメントのバインド時には、 以下のエラーが発生する可能性があります。

  • SQLCODE yyy, SQLSTATE xxxxx: 変換が必要ですが、静的変換グループが選択されていません。
  • SQLCODE yyy, SQLSTATE xxxxx: 選択された変換グループには、 交換するデータ・タイプに必要な変換が含まれていません (入力変数用の TO SQL、出力変数用の FROM SQL)。
  • SQLCODE yyy, SQLSTATE xxxxx: FROM SQL 変換の結果タイプは、 出力変数のタイプと互換性がありません。 または、TO SQL 変換のパラメーター・タイプは、入力変数のタイプと互換性がありません。

VALIDATE
データベース・マネージャーが、許可エラーとエラー未検出のオブジェクトをいつ検査するかを判別します。 この妥当性検査には、パッケージ所有者の許可 ID が使用されます。

BIND
プリコンパイル / バインド時に妥当性検査が実行されます。 オブジェクトが 1 つもない場合、または権限がまったく保持されていない場合、 エラー・メッセージが作成されます。 SQLERROR CONTINUE を指定した場合、 エラー・メッセージにかかわらずパッケージ / バインド・ファイルは作成されますが、 エラーのあるステートメントは実行できません。

RUN
バインド時に妥当性検査が行われます。 すべてのオブジェクトが存在し、全権限が保持されていれば、 それ以上実行しても検査は行われません。

プリコンパイル / バインド時にオブジェクトが 1 つもない場合、 または権限がまったく保持されていない場合、 SQLERROR CONTINUE オプションの設定とは無関係に警告メッセージが作成されて、 パッケージは正常にバインドされます。 ただし、プリコンパイル / バインド処理時に SQL ステートメントの権限検査と存在検査に障害が生じた場合、 実行時に再実行される可能性があります。

以下は、myapp.bnd (myapp.sqc プログラムのプリコンパイル時に生成されるバインド・ファイル) と接続が確立しているデータベースをバインドする例です。

   db2 bind myapp.bnd

バインド処理で生じたすべてのメッセージは、標準出力に送信されます。

使用上の注意

バインドは、アプリケーション・プログラム・ソース・ファイルのプリコンパイル処理の一部として、 または後の分離ステップとして実行することができます。 分離処理としてバインドを実行するときは、BIND を使用してください。

パッケージの作成に使用する名前は、 それを生成したソース・ファイル名を基にして指定され (既存パスや拡張子は廃棄されます)、 バインド・ファイルに保管されます。 たとえば、myapp.sql というプリコンパイル・ソース・ファイルは、 myapp.bnd という省略時バインド・ファイルと省略時パッケージ名の MYAPP を生成します。 ただし、BINDFILE および PACKAGE オプションを使用すれば、 プリコンパイル時にバインド・ファイル名とパッケージ名を変更することができます。

すでに存在しないスキーマ名にパッケージをバインドすると、 そのスキーマを暗黙に作成することになります。 スキーマの所有者は SYSIBM になります。 スキーマに対する CREATEIN 特権が PUBLIC に付与されます。

BIND は、開始されたトランザクションのもとで実行されます。 バインドの実行後、BIND は COMMIT か ROLLBACK を出して、 現行トランザクションを終了させ、別のトランザクションを開始します。

致命的エラーまたは 100 を超えるエラーが生じた場合、バインドは停止します。 致命的エラーが生じた場合、ユーティリティーは処理を停止させ、 全ファイルのクローズを試み、そのパッケージを廃棄します。

パッケージが dynamicrules バインドでバインドされる場合、 バインド・オプション owner の暗黙または明示的な値は、 動的 SQL ステートメントの許可検査に使用され、 バインド・オプション qualifier の暗黙または明示的な値は、 動的 SQL ステートメント内の未修飾オブジェクトの暗黙修飾子として使用されます。 複数のパッケージが単一の接続中に参照される場合、 特定のパッケージにより準備された動的 SQL は、 そのパッケージへのバインド・オプションにしたがって動作します。 特殊レジスター CURRENT SCHEMA の値は、 dynamicrules バインドを持つパッケージ結合にある修飾子には影響しません。

クライアント / サーバー環境で、BIND コマンドがバージョン 6 のサーバーに接続されたバージョン 6 より前のクライアントに発行される場合、 エラーを示す SQL0020W がクライアントに戻される場合があります。 この状態は、コマンドが DYNAMICRULES または OWNER パラメーターの一方または両方を使用する場合に起きます。 エラー・メッセージが表示されても、それらのパラメーターは引き続き有効であり、使用されます。 SQL0020W メッセージに表示される他のパラメーターは正しくエラーと示され、 メッセージが示すとおりに無視されます。 これらの他のパラメーターには、以下のものが含まれます。 ACTION、 CCSIDG、 CCSIDM、 CCSIDS、 CHARSUB、 CNULREQD、 DEC、 DECDEL、 GENERIC、 RELEASE、 REPLVER、 RETAIN、 STRDEL、 TEXT、 VALIDATE、 VERSION、および値 CONTINUE が指定された SQLERROR。

同じように、バージョン 6 以前のクライアントがバージョン 7 のサーバーに接続されると、 DYNAMICRULES、OWNER、または VALIDATE パラメーターのいずれかを組み合わせて使用すると、 SQL0020W エラーが示されます。 エラー・メッセージが表示されても、それらのパラメーターは引き続き有効であり、使用されます。 SQL0020W メッセージに表示される他のパラメーターは正しくエラーと示され、 メッセージが示すとおりに無視されます。 これらの他のパラメーターには、以下のものが含まれます。 ACTION、 CCSIDG、 CCSIDM、 CCSIDS、 CHARSUB、 CNULREQD、 DEC、 DECDEL、 GENERIC、 RELEASE、 REPLVER、 RETAIN、 STRDEL、 TEXT、 VERSION、および値 CONTINUE が指定された SQLERROR。
注:バージョン 7 またはそれ以降のサーバーに接続されており、 VALIDATE RUN が指定されており、 エラーを生成する原因となるがこの BIND オプションによってバイパスされるステートメントがある間は、 バージョン 6 以前のクライアントはバインド・ファイルを生成しません。 ただし、パッケージは作成されます。

アプリケーション・プログラムのバインドには、 この資料では紹介していない前提条件と制限事項が含まれています。 アプリケーション・プログラムのデータベースへのバインドについての詳細は、 アプリケーション開発の手引き を参照してください。

SQL ステートメントがエラーであることが検出され、 BIND オプション SQLERROR CONTINUE が指定されている場合、 このステートメントは無効とマークされます。 この SQL ステートメントの状態を変えるためには、さらに別の BIND を発行する必要があります。 暗黙的および明示的な再バインドでは、無効なステートメントの状態は変わりません。 VALIDATE RUN でバインドされたパッケージでは、ステートメントは、 再バインド時にオブジェクトが存在するかまたは権限の問題があるかどうかに応じて、 暗黙的と明示的な再バインドとの両方で、 静的バインドから増分バインドに変更したり、 増分バインドを静的バインドに変更することができます。

以下も参照

PRECOMPILE PROGRAM


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