PRECOMPILE コマンド

PRECOMPILE コマンドは、組み込み SQL ステートメントを含むアプリケーション・プログラム・ソース・ファイルを処理します。 SQL ステートメントに対するホスト言語呼び出しを含む変更後のソース・ファイルが作成されます。 また、デフォルトとして、データベース内にパッケージが作成されます。

範囲

このコマンドは、 db2nodes.cfgの任意のデータベース・パーティションから発行できます。 パーティション・データベース環境では、db2nodes.cfgファイルに定義される任意のデータベース・パーティション・サーバーから発行できます。 カタログ・データベース・パーティション上の データベース ・カタログを更新します。 その影響はすべてのデータベース・パーティションから見えます。

許可

以下のいずれかの権限が必要です。
  • DBADM 権限
  • EXPLAIN ONLY が指定されている場合、EXPLAIN 権限または暗黙的に EXPLAIN を含む権限があれば問題ありません。
  • パッケージが存在しない場合は、BINDADD 権限および以下のものが必要です。
    • パッケージのスキーマ名が存在しない場合は、データベースに対する IMPLICIT_SCHEMA 権限。
    • パッケージのスキーマ名が存在する場合は、スキーマに対する CREATEIN 特権 または SCHEMAADM 権限。
  • パッケージが存在する場合は、以下のいずれかの特権です。
    • スキーマに対する ALTERIN 特権または SCHEMAADM 権限
    • パッケージに対する BIND 特権
さらに、EXPLAIN または EXPLSNAP 節を使用して Explain 情報をキャプチャーする場合は、以下のいずれかの権限が必要です。
  • Explain 表に対する INSERT または INSERTIN 特権
  • スキーマ DATAACCESS 権限
  • DATAACCESS 権限

アプリケーション内の静的 SQL ステートメントをコンパイルするために必要な特権もすべて必要です。 グループに認可された特権が、 静的ステートメントの許可の検査に使用されることはありません。

必要な接続

データベース。 暗黙的な接続が可能である場合には、 デフォルトのデータベースへの接続が確立されます。

コマンド構文

For Db2®
Read syntax diagramSkip visual syntax diagramPRECOMPILEPREPfilenameACTIONADDREPLACERETAINNOYESREPLVERversion-idAPREUSENOYESBINDFILEUSINGbind-fileBLOCKINGUNAMBIGALLNOCOLLECTIONschema-nameCALL_RESOLUTIONIMMEDIATEDEFERREDCOMPATIBILITY_MODEORACONCURRENTACCESSRESOLUTIONUSE CURRENTLY COMMITTEDWAIT FOR OUTCOMEDATETIMEDEFEURISOJISLOCUSADEFERRED_PREPARENOALLYESDEGREE1degree-of-parallelismANYDISCONNECTEXPLICITAUTOMATICCONDITIONALDYNAMICRULESRUNBINDINVOKERUNINVOKEBINDDEFINERUNDEFINEBINDEXPLAINNOALLONLYREOPTYESEXPLSNAPNOALLREOPTYESEXTENDEDINDICATORNOYESFEDERATEDNOYESFEDERATED_ASYNCHRONYANYnumber_of_atqs_in_the_planFUNCPATH,schema-nameGENERIC" string"INSERTDEFBUFISOLATIONCSRRRSURKEEPDYNAMICYESNO LANGLEVELSAA1MIASQL92ELEVELconsistency token1LONGERRORNOYESMESSAGESmessage-fileNOLINEMACROOPTLEVEL01OPTPROFILEoptimization-profile-nameOUTPUTfilenameOWNERauthorization-idPACKAGEUSINGpackage-namePREPROCESSOR"preprocessor-command"'preprocessor-command'QUALIFIERqualifier-nameQUERYOPToptimization-levelREOPT NONEREOPT ONCEREOPT ALWAYSSQLCANONESAA2SQLERRORNOPACKAGECHECKCONTINUESQLFLAGSQL92EMVSDB2V23MVSDB2V31MVSDB2V41SYNTAXSQLRULESDB2STDSQLWARNNOYESSTATICREADONLYNOYESSTRING_UNITSSYSTEMCODEUNITS32SYNCPOINTONEPHASENONETWOPHASESYNTAXTARGETIBMCOBMFCOBANSI_COBOLCCPLUSPLUSFORTRANTRANSFORM GROUPgroupnameUNSAFENULLNOYESVALIDATEBINDRUNVERSIONversion-idAUTOWCHARTYPENOCONVERTCONVERTWITHWITHOUTTEMPORAL HISTORY
Notes:
  • 1 NO is the default for 32 bit systems and for 64 bit Windows systems where long host variables can be used as declarations for INTEGER columns. YES is the default for 64 bit UNIX systems.
  • 2 SYNTAX is a synonym for SQLERROR(CHECK).
For DB2® Database on servers other than Linux®, Windows and UNIX
Read syntax diagramSkip visual syntax diagramPRECOMPILEPREPfilenameACTIONADDREPLACERETAINYESNOREPLVERversion-idBINDFILEUSINGbind-fileBLOCKINGUNAMBIGALLNOCALL_RESOLUTIONIMMEDIATEDEFERREDCCSIDGdouble-ccsidCCSIDMmixed-ccsidCCSIDSsbcs-ccsidCHARSUBDEFAULTBITMIXEDSBCSCNULREQDYESNOCOLLECTIONschema-nameCOMPILEPRECOMPILECONCURRENTACCESSRESOLUTIONUSE CURRENTLY COMMITTEDWAIT FOR OUTCOMECONNECT121DATETIMEDEFEURISOJISLOCUSADBPROTOCOLDRDAPRIVATEDEC1531DECDELPERIODCOMMADEFERRED_PREPARENOALLYES2DEGREE1degree-of-parallelismANYDISCONNECTEXPLICITAUTOMATICCONDITIONALDYNAMICRULESRUNBINDINVOKERUNINVOKEBINDDEFINERUNDEFINEBINDENCODINGASCIIEBCDICUNICODECCSIDEXPLAINNOYESEXTENDEDINDICATORNOYESGENERIC" string"IMMEDWRITENOYESPH1ISOLATIONCSNCRRRSURKEEPDYNAMICYESNO LEVELconsistency-token3LONGERRORNOYESMESSAGESmessage-fileNOLINEMACROOPTHINThint-idOPTLEVEL01OS400NAMINGSYSTEMSQLOWNERauthorization-idPREPROCESSOR"preprocessor-command"'preprocessor-command'QUALIFIERqualifier-nameRELEASECOMMITDEALLOCATEREOPT NONEREOPT ONCEREOPT ALWAYSREOPT VARSNOREOPT VARSSQLFLAGSQL92EMVSDB2V23MVSDB2V31MVSDB2V41SYNTAXSORTSEQJOBRUNHEXSQLRULESDB2STDSQLERRORNOPACKAGECHECKCONTINUESTRDELAPOSTROPHEQUOTESYNCPOINTONEPHASENONETWOPHASESYNTAXTARGETIBMCOBMFCOBANSI_COBOLCCPLUSPLUSFORTRANBORLAND_CBORLAND_CPLUSPLUSTEXTlabelVERSIONversion-idAUTOVALIDATEBINDRUNWCHARTYPENOCONVERTCONVERT
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 NO is the default for 32 bit systems and for 64 bit Windows systems where long host variables can be used as declarations for INTEGER columns. YES is the default for 64 bit UNIX systems.

コマンド・パラメーター

filename
プリコンパイルするソース・ファイルを指定します。 拡張子の指定は、以下のようになります。
  • C アプリケーションの場合は .sqcを指定しなければなりません ( .c ファイルを生成します)。
  • C++ アプリケーションの場合は、 .sqx (Windows オペレーティング・システム) または .sqC (UNIX および Linux オペレーティング・システム) を指定する必要があります (Windows オペレーティング・システムの場合は .cxx ファイルを生成し、UNIX および Linux オペレーティング・システムの場合は .C ファイルを生成します)。
  • COBOL アプリケーションの場合は、.sqb を指定しなければなりません。 ( .cbl ファイルを生成します)。
  • FORTRAN アプリケーションの場合は、 .sqf を指定する必要があります (Windows オペレーティング・システムの場合は .for ファイルを生成し、UNIX および Linux オペレーティング・システムの場合は .f ファイルを生成します)。

UNIX および Linux オペレーティング・システムで組み込み SQL を含む C++ アプリケーションの推奨される拡張機能は sqCです。ただし、大/小文字を区別しないシステム用に作成された sqx 規則は、UNIX および Linux オペレーティング・システムでは許容されます。

ACTION
パッケージを追加または置換できるかどうかを指示します。
ADD
名前付きパッケージが存在せず、新規パッケージを作成するということを指示します。 既にパッケージがある場合は、実行停止状態となり、診断エラー・メッセージが戻されます。
REPLACE
既存のパッケージを、パッケージ名および作成者が同じ新規パッケージと置き換えることを指示します。 これは、ACTION オプションのデフォルト値です。
RETAIN
パッケージを置き換えたときに EXECUTE 権限が保持されるかどうかを指示します。 パッケージの所有権を変更した場合、 新規所有者は前のパッケージ所有者に BIND 権限と EXECUTE 権限を付与します。
NO
パッケージを置き換えたとき、EXECUTE 権限を保持しません。 この値は Db2 ではサポートされていません。
YES
パッケージを置き換えたとき、EXECUTE 権限を保持します。 これはデフォルト値です。
REPLVER version-id
特定のバージョンのパッケージを置き換えます。 バージョン ID は、どのバージョンのパッケージを置き換えるのかを指定するものです。 指定されたバージョンが存在しない場合には、エラーが戻されます。 REPLACEREPLVERオプションが指定されておらず、プリコンパイルパッケージのパッケージ名とバージョンにマッチするパッケージが既に存在する場合、そのパッケージは置き換えられます。そうでない場合は、新しいパッケージが追加されます。
APREUSE
静的 SQL アクセス・プランが再使用されるかどうかを指定します。 このオプションが有効である場合、照会コンパイラーは、バインド時および将来の暗黙および明示の再バインド時に、既存のパッケージ内のステートメントにアクセス・プランを再使用しようとします。
YES
照会コンパイラーは、パッケージ内のステートメントにアクセス・プランを再使用しようとします。 既存のパッケージがある場合、照会コンパイラーは、新規バインド・ファイル内のステートメントと合致できるすべてのステートメントに対して、アクセス・プランを再使用しようとします。 ステートメントが合致するには、ステートメント・テキストは同一でなければならず、既存のパッケージ内のステートメントのセクション番号は、新規パッケージ内のステートメントに対するセクション番号の内容と一致しなければなりません。
NO
照会コンパイラーは、パッケージ内のステートメントにアクセス・プランを再使用しようとしません。 これはデフォルト設定です。
BINDFILE
バインド・ファイルが作成されます。 package オプションも指定されていなければ、パッケージは作成されません。 次に示す例のように、バインド・ファイルを要求したのにパッケージが作成されないなら、
   db2 prep sample.sqc bindfile

オブジェクトの存在と許可 SQLCODE はエラーではなく警告として扱われます。 それで、プリコンパイルに使用されるデータベースに、アプリケーション内の静的 SQL ステートメントで参照されているすべてのオブジェクトが入っているわけではない場合でも、 バインド・ファイルは正常に作成されます。 必要なオブジェクトが作成されたなら、 バインド・ファイルは正常にバインドされ、パッケージが作成されます。

USING bind-file
プリコンパイラーが生成するバインド・ファイルの名前。 ファイル名の拡張子は.bndでなければなりません。 ファイル名を入力しない場合、プリコンパイラーはプログラムの名前(ファイル名パラメーターとして入力)を使用し、.bnd拡張子を追加します。 パスを指定しないと、バインド・ファイルは現行ディレクトリーに作成されます。
BLOCKING
カーソルに対する行ブロックのタイプを指定します。 パーティション・データベース環境では、LOB 列データ・タイプ参照を含んだ行データのブロッキングもサポートされます。
ALL
FOR READ ONLY 節で指定されているカーソルまたは FOR UPDATE として指定されていないカーソルの場合、ブロック化が発生します。

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

NO
どのカーソルの場合もブロッキングは行われません。

読み取り専用カーソルおよび未確定カーソルの定義については、DECLARE CURSOR ステートメントを参照してください。

あいまいなカーソルは、更新可能として扱われます。

UNAMBIG
FOR READ ONLY 節で指定されているカーソルの場合、ブロック化が発生します。

FOR READ ONLY または FOR UPDATE 節で宣言されていない、未確定でない読み取り専用のカーソルはブロック化されます。 未確定カーソルはブロック化されません。

あいまいなカーソルは、更新可能として扱われます。

CALL_RESOLUTION
設定されている場合、CALL_RESOLUTION DEFERRED オプションは使用すべきでない sqleproc() API の起動として、CALL ステートメントが実行されることを示します。 設定されていないか、または IMMEDIATE が設定されている場合、CALL ステートメントは通常の SQL ステートメントとして実行されます。 プリコンパイラーが CALL_RESOLUTION IMMEDIATEを使用したCALLステートメントのプロシージャーの解決に失敗した場合、SQL0204が発行されます。
CCSIDG double-ccsid
CREATE および ALTER TABLE SQL ステートメントの文字カラム定義で、 2 バイト文字用のコード化文字セット ID (CCSID) (特定の CCSID 節は使用しない) を指定する整数。 このオプションは、 Db2のサーバーではサポートされていません。 このオプションが指定されていない場合、DRDA サーバーは組み込みのデフォルト値を使用します。
CCSIDM mixed-ccsid
CREATE および ALTER TABLE SQL ステートメントの文字カラム定義で、 混合バイト文字用のコード化文字セット ID (CCSID) (特定の CCSID 節は使用しない) を指定する整数。 このオプションは、 Db2のサーバーではサポートされていません。 このオプションが指定されていない場合、DRDA サーバーは組み込みのデフォルト値を使用します。
CCSIDS sbcs-ccsid
CREATE および ALTER TABLE SQL ステートメントの文字カラム定義で、 1 バイト文字用のコード化文字セット ID (CCSID) (特定の 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 文字サブタイプが使用されます。
CNULREQD
このオプションは、LANGLEVELプリコンパイル・オプションに関連しています。 これは、C または C++ アプリケーションで作成されたバインド・ファイルの場合のみ有効です。 このバインド・オプションは、 Db2のサーバーではサポートされていません。
NO
アプリケーションは、C文字列ホスト変数のヌルターミネータに関して LANGLEVEL SAA1プリコンパイルオプションに基づいてコーディングされました。
YES
アプリケーションは、C文字列ホスト変数のNULL 終止符に関して、LANGLEVEL MIA プリコンパイル・オプションに基づいてコーディングされました。
COLLECTION schema-name
パッケージ用の 128 バイトの収集 ID を指定します。 これを指定しなかった場合、パッケージを処理する際には、 ユーザーの許可 ID が使用されます。
COMPATIBILITY_MODE
ORA
Db2 データベース・マネージャーは、他のデータベース・システムからの組み込み SQL C アプリケーションのマイグレーションを容易にするフィーチャーを提供します。 これらの互換性機能を有効にするには、COMPATIBILITY_MODEORAに設定します。 例えば、以下のコマンドは、tbsel.sqc ファイルのコンパイル時に互換機能を使用可能にします。
$ db2 PRECOMPILE tbsel.sqc BINDFILE COMPATIBILITY_MODE ORA
CONCURRENTACCESSRESOLUTION
パッケージ内のステートメントに使用する並行アクセス解決を指定します。
USE CURRENTLY COMMITTED
データベース・マネージャーが更新または削除の処理中である場合に、該当するスキャンに現在コミット済みバージョンのデータを使用できることを指定します。 挿入処理中の行はスキップできます。 この節は、有効な分離レベルがカーソル固定または読み取り固定である場合に適用され (読み取り固定の場合、それはコミットされていない挿入だけをスキップします)、そうでない場合は無視されます。 該当するスキャンには、非読み取り専用ステートメントに加え、読み取り専用ステートメントの一部にできる読み取り専用スキャンが含まれます。 レジストリー変数 DB2_EVALUNCOMMITTEDDB2_SKIPDELETEDおよびDB2_SKIPINSERTEDの設定は適用されなくなりました。
WAIT FOR OUTCOME
カーソル固定およびさらに上位のスキャンで、更新処理中または削除処理中のデータが検出されたときにはコミットまたはロールバックを待機するように指定します。 挿入処理中の行はスキップされません。 レジストリー変数 DB2_EVALUNCOMMITTEDDB2_SKIPDELETEDおよびDB2_SKIPINSERTEDの設定は適用されなくなりました。
CONNECT
1
CONNECT ステートメントをタイプ 1 の CONNECT として処理するよう指定します。
2
CONNECT ステートメントをタイプ 2 の CONNECT として処理するよう指定します。
DATETIME
使用する日時形式を指定します。
DEF
データベースのテリトリー・コードと対応する日時形式を使用します。
EUR
ヨーロッパの日時形式には IBM 標準を使用してください。
ISO
国際標準化機構規格の日時形式を使用します。
JIS
日本工業規格の日時形式を使用します。
LOC
データベースのテリトリー・コードと対応する地域別日時形式を使用します。
USA
U.S日時形式には IBM 標準を使用してください。
DBPROTOCOL
3 部構成の名前のステートメントによって識別されるリモート・サイトに接続するときに 使用するプロトコルを指定します。 Db2 for z/OS® でのみサポートされます。 サポートされるオプション値のリストについては、 Db2 for z/OSの資料を参照してください。
DEC
10 進算術演算に使用する最大精度を指定します。 このプリコンパイル・オプションまたはバインド・オプションは、 Db2のサーバーではサポートされていません。 このオプションが指定されていない場合、DRDA サーバーは組み込みのデフォルト値を使用します。
15
10 進算術演算に 15 桁精度が使用されます。
31
10 進算術演算に 31 桁精度が使用されます。
DECDEL
10 進数および浮動小数点リテラル中で小数点標識としてピリオド (.) またはコンマ (,) のどちらかを指定します。 このプリコンパイル/bind オプションは、 Db2のサーバーではサポートされていません。 このオプションが指定されていない場合、DRDA サーバーは組み込みのデフォルト値を使用します。
COMMA
小数点標識としてコンマ (,) を使用します。
PERIOD
小数点標識としてピリオド (.) を使用します。
DEFERRED_PREPARE
Db2 共通サーバー・データベースまたは DRDA データベースにアクセスする際のパフォーマンスを向上させます。 このオプションは、SQL PREPARE ステートメントを、 それに関連した OPEN、 DESCRIBE、 または EXECUTE ステートメント・フローと結合して、 プロセス間またはネットワーク・フローを最小にします。
NO
PREPARE ステートメントは、それが発行された時点で実行されます。
YES
PREPARE ステートメントの実行は、対応する OPEN、DESCRIBE、 または EXECUTE ステートメントが発行されるまで据え置かれます。

PREPARE ステートメントは、INTO 節 (SQLDA がすぐに戻されることを必要とする) を使用する場合には据え置かれません。 ただし、パラメーター・マーカーを使用しないカーソルについて PREPARE INTO ステートメントが発行された場合には、PREPARE の実行時にカーソルを事前オープンすることによって、処理が最適化されます。

ALL
PREPARE INTO ステートメントも据え置かれること以外は、YES と同じです。 PREPARE ステートメントが SQLDA を戻すために INTO 節を使用する場合、アプリケーションでは、 OPEN、DESCRIBE、または EXECUTE ステートメントが発行され、 戻されるまで、この SQLDA の内容を参照してはなりません。
DEGREE
SMP システムで静的 SQL ステートメントを実行するための並列処理の度合いを指定します。 このオプションは、CREATE INDEX 並列処理には影響を与えません。
1
ステートメントの実行に並列処理を使用しません。
degree-of-parallelism
ステートメントを実行する際の並列処理の度合いを指定します。値の範囲は 2 から 32 767 です。
ANY
ステートメントの実行に、 データベース・マネージャーによって決定された度合いを使用した並列処理を含めることができることを指定します。
DISCONNECT
AUTOMATIC
コミット時にすべてのデータベース接続を切断するよう指定します。
CONDITIONAL
RELEASE をマークしたか、 またはオープン状態の WITH HOLD カーソルをもたないデータベース接続を、 コミット時に切断するよう指定します。
EXPLICIT
RELEASE ステートメントで明示的に解放をマークしたデータベース接続だけを、 コミット時に切断するよう指定します。
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 z/OS でのみサポートされます。 サポートされるオプション値のリストについては、 Db2 for z/OSの資料を参照してください。
EXPLAIN
各 SQL ステートメント用に選択したアクセス・プランに関する Explain 表の情報を、 パッケージに保管します。
NO
Explain 情報はキャプチャーされません。
YES
Explain 表には、静的ステートメントの場合は prep/bind 時に、追加バインド・ステートメントの場合は実行時に、選択されたアクセス・プランについての情報が取り込まれます。

パッケージがルーチンに使用されるもので、 パッケージに追加バインド・ステートメントが含まれる場合、 そのルーチンは MODIFIES SQL DATA として定義されなければなりません。 これが行われない場合、パッケージ内の追加バインド・ステートメントは ランタイム・エラーを生じます (SQLSTATE 42985)。

REOPT
再最適化可能な追加バインド SQL ステートメントの Explain 情報が、実行時に各 Explain 表に入れられます。 さらに、CURRENT EXPLAIN MODE 特殊レジスターが NO に設定されている場合でも、再最適化可能な動的 SQL ステートメントの Explain 情報が実行時に収集されます。

パッケージがルーチンに使用される場合、 そのルーチンは 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 に設定されている場合でも、再最適化可能な動的 SQL ステートメントの Explain スナップショット情報が実行時に収集されます。

パッケージがルーチンに使用される場合、 そのルーチンは MODIFIES SQL DATA として定義されなければなりません。 そうしなければ、パッケージ内の追加バインドおよび動的ステートメントは ランタイム・エラーを生じます (SQLSTATE 42985)。

ALL
適格な各静的 SQL ステートメントの Explain スナップショットが、準備またはバインド時に 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 は、明示的に指定する必要がありません。 関数パス内に含まれていなければ、最初のスキーマに暗黙的に想定されます。
INSERT
サーバーへプリコンパイルまたはバインドされているプログラムが、パフォーマンス向上のために挿入データをバッファリングすることを要求できるようにします。
BUF
アプリケーションからの挿入データをバッファリングすることを指定します。
DEF
アプリケーションからの挿入データをバッファリングしないことを指定します。
GENERIC "string"
ターゲット・データベースで定義される新規オプションのバインディングをサポートします。 BIND または PRECOMPILE で定義されている BIND オプションを渡すようにするには、このオプションを使用しないでください。 構文は次のとおりです。
   generic "option1 value1 option2 value2 ..."
各オプションと値は、1 つ以上のブランク・スペースで区切らなければなりません。 例えば、以下のようにして、OPT1、OPT2、および OPT3 オプションをそれぞれバインドできます。
   generic "opt1 value1 opt2 value2 opt3 value3"

ストリングの最大長は 4096 バイトです。 各オプション名の最大長はストリングで 255 バイトです。

IMMEDWRITE
グループ・バッファー・プールに依存するページセットまたはデータベース・パーティションに対する更新について、即時書き込みを行うかどうかを示します。 Db2 for z/OS でのみサポートされます。 サポートされるオプション値のリストについては、 Db2 for z/OSの資料を参照してください。
ISOLATION
このパッケージにバインドされるプログラムを、 他の実行プログラムの影響からどの程度分離できるかを指定します。
CS
カーソル固定を分離レベルとして指定します。
NC
コミットなし。 コミットメント制御が使用されないということを指定します。 この分離レベルは、 Db2ではサポートされていません。
RR
反復可能読み取りを分離レベルとして指定します。
RS
読み取り固定を分離レベルとして指定します。 読み取り固定は、パッケージ内での SQL ステートメントの実行を、 他のアプリケーションが読み取りおよび変更を行った行に対する処理から分離させます。
UR
非コミット読み取りを分離レベルとして指定します。
KEEPDYNAMIC

このパラメーターは、トランザクション間で動的 SQL ステートメントを保持するかどうかを指定します。

Db2 for z/OS のサポートされるオプションについて詳しくは、 Db2 for z/OS インフォメーション・センターの資料を参照してください。

Db2 バージョン 9.8 フィックスパック 2 以降、 KEEPDYNAMIC YES オプションでバインドされたパッケージで準備された動的 SQL ステートメントは、COMMIT または ROLLBACK 操作の後も SQL コンテキストに保持されます。 これはデフォルトの動作である。

YES

準備された文に関連付けられた文テキストとセクションを無期限に保持するようにSQLコンテキストに指示します。 動的 SQL ステートメントは複数のトランザクション間で保持されます。 KEEPDYNAMIC YESにバインドされたすべてのパッケージは、デフォルトで既存のパッケージキャッシュ動作と互換性があります。

No

各作業単位の終わりに、準備済みステートメントに関連付けられたステートメント・テキストとセクションが SQL コンテキストで除去されるように指示します 。 KEEPDYNAMIC NOにバインドされたパッケージで準備された非アクティブな動的SQLステートメントは、COMMITまたはROLLBACK操作中にSQLコンテキストから削除されます。 ステートメントは、新しいトランザクションの中で再び準備される必要があります。 クライアント、ドライバー、またはアプリケーションは、再使用を望むすべての動的 SQL ステートメントを、新しい作業単位で再び準備する必要があります。

以下の環境のもとでは、動的 SQL ステートメントはトランザクションの終わりに達しても、アクティブなままでいることができます。
  • WITH HOLD オプションを使って宣言されたカーソルが、コミット・ポイントで開いている。
  • 動的 SQL ステートメントが COMMIT または ROLLBACK 操作を実行している。
  • COMMIT または ROLLBACK 操作を実行するストアード・プロシージャーまたはユーザー定義関数を、動的 SQL ステートメントが呼び出す。
LANGLEVEL
アプリケーション内の静的および動的 SQL の構文およびセマンティクスに適用される SQL 規則を指定します。
MIA
以下のように ISO/ANS SQL92 規則を選択します。
  • エラー SQLCODE または SQLSTATE の値の検査をサポートするには、 アプリケーション・コードの中で SQLCA が宣言されていなければなりません。
  • C の NULL 終了ストリングにはブランクが埋め込まれ、 切り捨てが実行された場合でも常に NULL 終了文字が含められます。
  • FOR UPDATE 節は、定位置 UPDATE で更新されるすべての列において任意指定です。
  • UPDATE または DELETE ステートメントの対象となる表の列が、 検索条件の中や代入節の右辺で参照されているなら、 検索 UPDATE または DELETE に、対象となる表に対する SELECT 特権が必要です。
  • 索引を使って解決可能な列関数 (例えば MIN または MAX) は、NULL も検査し、NULL があれば警告 SQLSTATE 01003 を戻します。
  • CREATE または ALTER TABLE ステートメントの中に重複したユニーク制約が含まれているなら、 エラーが戻されます。
  • 特権が何も付与されていない場合、 付与者にそのオブジェクトに対する権限がないなら、 エラーが戻されます (その権限があるなら警告が戻されます)。
SAA1
以下のように、共通の IBM® Db2 規則を選択します。
  • エラー SQLCODE または SQLSTATE の値の検査をサポートするには、 アプリケーション・コードの中で SQLCA が宣言されていなければなりません。
  • C の NULL 終了ストリング、切り捨てが実行された場合には、NULL 文字が最後に付けられません。
  • FOR UPDATE 節は、定位置 UPDATE で更新されるすべての列において必須です。
  • UPDATE または DELETE ステートメントの対象となる表が、 そのステートメントの全選択から参照されるのでなければ、 検索 UPDATE または DELETE に、対象となる表に対する SELECT 特権は不要です。
  • 索引を使って解決可能な列関数 (例えば MIN または MAX) は、NULL を検査せず、 警告 SQLSTATE 01003 は戻されません。
  • 警告が戻され、ユニーク制約が重複していても無視されます。
  • 特権が付与されていないなら、エラーが戻されます。
SQL92E
以下のように ISO/ANS SQL92 規則を定義します。
  • SQLCODE または SQLSTATE の値の検査をサポートするには、 その名前の変数をホスト変数の宣言セクションで宣言できます (どちらも宣言されていないなら、 プリコンパイル中には SQLCODE が指定されているものとされます)。
  • C の NULL 終了ストリングにはブランクが埋め込まれ、 切り捨てが実行された場合でも常に NULL 終了文字が含められます。
  • FOR UPDATE 節は、定位置 UPDATE で更新されるすべての列において任意指定です。
  • UPDATE または DELETE ステートメントの対象となる表の列が、 検索条件の中や代入節の右辺で参照されているなら、 検索 UPDATE または DELETE に、対象となる表に対する SELECT 特権が必要です。
  • 索引を使って解決可能な列関数 (例えば MIN または MAX) は、NULL も検査し、NULL があれば警告 SQLSTATE 01003 を戻します。
  • CREATE または ALTER TABLE ステートメントの中に重複したユニーク制約が含まれているなら、 エラーが戻されます。
  • 特権が何も付与されていない場合、 付与者にそのオブジェクトに対する権限がないなら、 エラーが戻されます (その権限があるなら警告が戻されます)。
LEVEL consistency-token
一貫性トークンを使用するモジュールのレベルを定義します。 一貫性トークンとは、8 文字までの長さの任意の英数字値のことです。 RDB パッケージの一貫性トークンは、 リクエスターのアプリケーションとリレーショナル・データベース・パッケージが同期化されているかどうかを検証します。 このオプションは、通常は使用しないでください。
LONGERROR
長いホスト変数宣言をエラーとして扱うかどうかを示します。 移植性のために、sqlint32 は、 プリコンパイル C および C++ コードで INTEGER 列の宣言として使用できます。
NO
長いホスト変数宣言の使用に対してエラーを生成しません。 これは、32 ビット・システムの場合、および INTEGER 列の宣言として long ホスト変数を使用できる 64 ビット Windows システムの場合のデフォルトです。 64 ビット UNIX プラットフォームでこのオプションを使用すると、長いホスト変数を BIGINT 列の宣言として使用できます。
YES
長いホスト変数宣言の使用に対してエラーを生成します。 これは、64 ビット UNIX システムの場合のデフォルトです。
MESSAGES message-file
警告メッセージ、エラー・メッセージ、 および完了状況メッセージの宛先を指定します。 メッセージ・ファイルは、バインドが正常であるかどうかによって作成されます。 メッセージ・ファイル名を指定しなかった場合、メッセージは標準出力に書き込まれます。 ファイルへの完全パスを指定しなかった場合は、現行ディレクトリーが使用されます。 なお、既存ファイルの名前を指定すると、そのファイルの内容は上書きされます。
NOLINEMACRO
出力.cファイルでの#lineマクロの生成を抑制します。 これは、プロファイル、相互参照ユーティリティー、およびデバッガーのようなソース行情報を必要とする開発ツールでファイルを使用する場合に役に立ちます。 このプリコンパイル・オプションは、 C/C++ プログラム言語でのみ使用します。
OPTHINT
照会最適化ヒントを静的 SQL に使用するかどうかを制御します。 Db2 for z/OS でのみサポートされます。 サポートされるオプション値のリストについては、 Db2 for z/OSの資料を参照してください。
OPTLEVEL
SQL ステートメントの中でホスト変数が使用されている場合に、 内部 SQLDA の初期化を C/C++ プリコンパイラーで最適化するかどうかを指示します。 そのように最適化すれば、 密なループ内で単一の SQL ステートメント (FETCH など) を使う場合のパフォーマンスが向上します。
0
SQLDA の初期化を最適化しないようプリコンパイラーに指示します。
1
SQLDA の初期化を最適化するようプリコンパイラーに指示します。 アプリケーションで以下のものを使っている場合は、この値を指定しないでください。
  • 次の例に示すようなポインター・ホスト変数
    exec sql begin declare section;
    char (*name)[20];
    short *id;
    exec sql end declare section;
  • 直接 SQL ステートメントに指定される C++ データ・メンバー
OPTPROFILE optimization-profile-name
パッケージ内のすべての静的ステートメントに使用される既存の最適化プロファイルの名前を指定します。 このオプションのデフォルト値は、 空ストリングです。 この値は CURRENT OPTIMIZATION PROFILE 特殊レジスターが NULL である DML ステートメントの動的準備のデフォルトとしても適用されます。 指定された名前が修飾されていない場合、それは SQL 識別子であり、QUALIFIER バインド・オプションによって暗黙的に修飾されます。

BIND コマンドは最適化ファイルを処理せず、名前が構造的に有効であることだけを確認します。 したがって、最適化プロファイルが存在しないか無効である場合、最適化プロファイルを使用して DML ステートメントが最適化されるまで、理由コード 13 の SQL0437W 警告は発生しません。

OUTPUT filename
コンパイラーが生成した修正済みソース・ファイルのデフォルト名をオーバーライドします。 この名前にはパスを含めることもできます。
OS400NAMING
Db2 for IBM i データにアクセスするときに使用する命名オプションを指定します。 Db2 for IBM i でのみサポートされます。 サポートされるオプション値のリストについては、 Db2 for System i ®の資料を参照してください。
分離文字としてスラッシュが使用されているため、 Db2 ユーティリティーは、 OS400NAMING SYSTEM オプションを指定してプリコンパイルまたはバインドされている場合でも、 System i システム命名規則を使用する特定の SQL ステートメントで実行時に構文エラーを報告することができます。 例えば、 System i システム命名規則が使用されている場合、 OS400NAMING SYSTEM オプションを使用してプリコンパイルまたはバインドされているかどうかに関係なく、コマンド行プロセッサーは SQL CALL ステートメントに構文エラーを報告します。
OWNER authorization-id
パッケージ所有者の 128 バイトの許可 ID を指定します。 その所有者には、パッケージに含まれる SQL ステートメントを実行するための特権が必要です。 DBADM 権限を持つユーザーのみが、ユーザー ID 以外の許可 ID を指定できます。 デフォルト値は、プリコンパイル/バインド処理の 1 次許可 ID です。 SYSIBM、SYSCAT、および SYSSTAT はこのオプションには無効な値です。 authorization-id はユーザーに限ります (ロールまたはグループにすることはできません)。
PACKAGE
パッケージを作成します。 PACKAGEBINDFILESYNTAX のいずれも指定しない場合、デフォルトでデータベースにパッケージが作成されます。
USING package-name
プリコンパイラーが生成するパッケージの名前。 名前を入力しないなら、アプリケーション・プログラムのソース・ファイルの名前 (拡張子を取り去って大文字に変換したもの) が使われます。 最大長は 128 バイトです。 このパッケージ名には、予約済みパッケージ名を使用することはできません。 予約済みパッケージ名について詳しくは、 IDを参照してください。
PREPROCESSOR "preprocessor-command"

組み込み SQL ステートメントを処理する前に、 プリコンパイラーが実行できるプリプロセッサー・コマンドを指定します。 プリプロセッサー・コマンド・ストリング (最大長 1024 バイト) は、 二重引用符または単一引用符で囲む必要があります。

このオプションは、宣言セクションでマクロを使用できるようにします。 有効なプリプロセッサー・コマンドとは、コマンド行から発行でき、 ソース・ファイルを指定しなくてもプリプロセッサーを呼び出せるコマンドです。 以下に例を示します。
   xlc -P -DMYMACRO=0
QUALIFIER qualifier-name
パッケージに含まれる非修飾オブジェクトの 128 バイトの暗黙修飾子を指定します。 owner が明示的に指定されているかどうかにかかわらず、その所有者の許可 ID がデフォルト ID になります。
QUERYOPT optimization-level
パッケージに含まれるすべての静的 SQL ステートメントに必要な最適化レベルを指示します。 デフォルト値は 5 です。 SET CURRENT QUERY OPTIMIZATION ステートメントは、使用可能な最適化レベルの全範囲を説明します。
RELEASE
リソースを、各 COMMIT ポイントで解放するか、 アプリケーションの終了時に解放するかどうかを指示します。 このプリコンパイル/bind オプションは、 Db2のサーバーではサポートされていません。
COMMIT
各コミット点でリソースを解放します。 これは、動的 SQL ステートメントに使用されます。
DEALLOCATE
アプリケーションの終了時にだけリソースを解放します。
REOPT
Db2 がホスト変数、パラメーター・マーカー、グローバル変数、および特殊レジスターの値を使用して実行時にアクセス・パスを最適化するようにするかどうかを指定します。 有効な値は以下のとおりです。
NONE
ホスト変数、パラメーター・マーカー、グローバル変数、または特殊レジスターを含む SQL ステートメントのアクセス・パスは、 これらの変数の実際の値によって最適化されません。 その代わりに、これらの変数のデフォルトの推定値が使用され、 このプランがキャッシュされて使用されます。 これはデフォルトの動作である。
ONCE
最初に照会が実行されるときに、ホスト変数、パラメーター・マーカー、グローバル変数、または特殊レジスターの実際の値によって、SQL ステートメントのアクセス・パスが最適化されます。 このプランがキャッシュされて使用されます。
ALWAYS
毎回の実行時に、ホスト変数、パラメーター・マーカー、グローバル変数、 または特殊レジスターの既知の値によって、SQL ステートメントのアクセス・パスが必ずコンパイルおよび再最適化されます。
REOPT | NOREOPT VARS
これらのオプションは、REOPT ALWAYSREOPT NONEに置き換えられました。 ただし、以前のリリースとの互換性のために引き続きサポートされています。 Db2 がホスト変数、グローバル変数、パラメーター・マーカー、および特殊レジスターの値を使用して実行時にアクセス・パスを判別するようにするかどうかを指定します。 Db2 for z/OS でのみサポートされます。 サポートされるオプション値のリストについては、 Db2 for z/OSの資料を参照してください。
SQLCA
FORTRAN アプリケーションでのみ使用します。 その他の言語で使用しても、このオプションは無視されます。
NONE
修正されたソース・コードは SAA 定義と整合性がないことを指定します。
SAA
修正されたソース・コードは SAA 定義と整合性があることを指定します。
SQLERROR
エラーが起きた場合にパッケージあるいはバインド・ファイルを作成するかどうかを指示します。
CHECK
ターゲット・システムが、バインドされている SQL ステートメントの すべての構文、およびセマンティックの検査を行うことを指定します。 この処理の一部としてパッケージが作成されることはありません。 バインド中に、同じ名前とバージョンの既存のパッケージが検出された場合、ACTIONREPLACEが指定されても、既存のパッケージは削除も置換もされません。
CONTINUE
SQL ステートメントのバインド時にエラーが発生しても、パッケージを作成します。 許可または存在の理由でバインドに失敗したステートメントは、VALIDATE RUNも指定された場合、実行時に段階的にバインドできます。 実行時にこれらのステートメントを実行しようとすると、 エラー (SQLCODE -525, SQLSTATE 51015) が生成されます。
NOPACKAGE
エラーを検出した場合、パッケージもバインド・ファイルも作成しません。
SQLFLAG
このオプションに指定された SQL 言語構文との相違点を識別して報告します。

バインド・ファイルまたはパッケージは、SQLFLAGオプションに加えて、BINDFILE オプションまたはPACKAGEオプションが指定される場合にのみ作成されます。

ローカル構文検査が実行されるのは、 次に示すオプションのうちの 1 つが指定された場合だけです。
  • BINDFILE
  • PACKAGE
  • SQLERROR CHECK
  • SYNTAX
SQLFLAG が指定されない場合、flagger 関数は呼び出されず、バインド・ファイルまたはパッケージは影響を受けません。
SQL92E SYNTAX
SQL ステートメントは、データベース・カタログにアクセスするのに必要な構文規則を除いて、 ANSI または ISO SQL92 の項目レベル SQL 言語の書式および構文と比較して調べられます。 相違があれば、プリコンパイラー・リストに報告されます。
MVSDB2V23 SYNTAX
SQL ステートメントは、MVS™ Db2 バージョン 2.3 SQL 言語構文に照らして検査されます。 構文の相違があれば、プリコンパイラー・リストに報告されます。
MVSDB2V31 SYNTAX
SQL ステートメントは、MVS Db2 バージョン 3.1 SQL 言語構文に照らして検査されます。 構文の相違があれば、プリコンパイラー・リストに報告されます。
MVSDB2V41 SYNTAX
SQL ステートメントは、MVS Db2 バージョン 4.1 SQL 言語構文に照らして検査されます。 構文の相違があれば、プリコンパイラー・リストに報告されます。
SORTSEQ
System i システムで使用するソート・シーケンス・テーブルを指定します。 Db2 for IBM i でのみサポートされます。 サポートされるオプション値のリストについては、 Db2 for IBM iの資料を参照してください。
SQLRULES
下記のことを指定します。
  • タイプ 2 CONNECT が Db2 規則に従って処理されるのか、それとも ISO/ANS SQL92に基づく標準 (STD) 規則に従って処理されるのか。
  • 結果セット内の LOB 列の形式をアプリケーションが指定する方法。
Db2
  • SQL CONNECT ステートメントで、現在の接続と、確立されている (休止 状態の) 別の接続との間で切り換えることができるようにします。
  • このデフォルト設定を使用する場合、アプリケーションは LOB 値と LOB ロケーターのいずれを取り出すかを最初のフェッチ要求時にのみ指定できます。 その後のフェッチ要求では、同じ形式を LOB 列に使用する必要があります。
STD
  • SQL CONNECT ステートメントでは、 新しい 接続を確立することしかできないようにします。 休止接続へ切り替えるには、SQL SET CONNECTION ステートメントを使います。
  • アプリケーションは、それぞれのフェッチ要求で LOB 値を取り出すのか LOB ロケーターを取り出すのかを変更することができます。 つまり、BLOCKING バインド・オプションの設定値にかかわりなく、1 つ以上の LOB 列を持つカーソルをブロック化することはできません。
SQLWARN
警告が動的SQLステートメントのコンパイル(PREPAREまたはEXECUTE IMMEDIATEを介して)から返されるのか、describe処理(PREPARE ..を介して)から返されるのかを示します。INTO または DESCRIBE)。
NO
SQL コンパイラーから警告を戻しません。
YES
SQL コンパイラーから警告を戻します。

SQLCODE +238 は例外です。 これは、 SQLWARN オプション値に関係なく返されます。

STATICREADONLY
静的カーソルを READ ONLY として扱うかどうかを指定します。
NO
すべての静的カーソルは、ステートメントテキストとLANGLEVELプリコンパイルオプションの設定に通常生成される属性を引き継ぎます。 これはデフォルト値です。
YES
FOR UPDATE または FOR READ ONLY 節を含まない静的カーソルは、 READ ONLY と見なされます。
STRDEL
SQL ステートメントで使用するストリング区切り文字として、 アポストロフィ (') または二重引用符 (") のどちらを使用するか指定します。 このプリコンパイル/bind オプションは、 Db2のサーバーではサポートされていません。 このオプションが指定されていない場合、DRDA サーバーは組み込みのデフォルト値を使用します。
APOSTROPHE
ストリング区切り文字として、アポストロフィ (') を使用します。
QUOTE
ストリング区切り文字として、二重引用符 (") を使用します。
STRING_UNITS
文字データ・タイプとグラフィック・データ・タイプが静的 SQL ステートメントで明示的なストリング単位なしで使用された場合の、ストリング単位を指定します。 デフォルト値は、対象のデータベースの string_units データベース構成パラメーターの設定値に基づきます。
SYSTEM
この設定は、Unicode データベースでは以下の影響を与えます。
  • CODEUNITS32 キーワードを指定せずに定義された CHAR、VARCHAR、および CLOB のデータ・タイプは、デフォルトの OCTETS になる。
  • CODEUNITS32 キーワードを指定せずに定義された GRAPHIC、VARGRAPHIC、および DBCLOB のデータ・タイプは、デフォルトの CODEUNITS16 になる。
この設定は、Unicode 以外のデータベースでは以下の影響を与えます。
  • CODEUNITS32 キーワードを指定せずに定義された CHAR、VARCHAR、および CLOB のデータ・タイプは、デフォルトの OCTETS になる。
  • GRAPHIC、VARGRAPHIC、および DBCLOB のデータ・タイプには、2 バイトの暗黙的なストリング単位が保持される。
CODEUNITS32
この設定は、Unicode データベースにのみ有効で、以下の影響を与えます。
  • BYTE または OCTETS キーワードを指定せずに定義された CHAR、VARCHAR、および CLOB のデータ・タイプは、デフォルトの CODEUNITS32 になる。
  • CODEUNITS16 キーワードを指定せずに定義された GRAPHIC、VARGRAPHIC、および DBCLOB のデータ・タイプは、デフォルトの CODEUNITS32 になる。
SYNCPOINT
複数のデータベース接続にまたがってコミットまたはロールバックを調整する仕方を指定します。 このコマンド・パラメーターは無視されます。 ここでは、後方互換性のためにこれを掲載しています。
NONE
2 フェーズ・コミットを実行するのにトランザクション管理機能 (TM) を使用しないことを指定し、 単一更新機構、多重読み取り機構を適用しません。 コミットは、関連する各データベースに送られます。 コミットが失敗したときのリカバリーは、アプリケーションが行います。
ONEPHASE
2 フェーズ・コミットを実行するのに TM を使用しないことを指定します。 複数のデータベース・トランザクションの各データベースが行う作業をコミットするときは、 1 フェーズ・コミットが使用されます。
TWOPHASE
このプロトコルをサポートする複数のデータベースにまたがって 2 フェーズ・コミットを調整するのに TM が必要であることを指定します。
SYNTAX
プリコンパイル時に、パッケージまたはバインド・ファイルの作成を抑制します。 このオプションを使用すれば、 既存のパッケージまたはバインド・ファイルを修正したり変更したりしないで、 ソース・ファイルの妥当性を検査できます。 SYNTAXSQLERROR CHECKの同義語です。

SYNTAXPACKAGE オプションと一緒に使用すると、PACKAGE は無視されます。

TARGET
現行のプラットフォームでサポートされているコンパイラーの 1 つに合わせて調整した修正コードを生成するように、プリコンパイラーに指示します。
IBMCOB
AIX®では、 IBM COBOL Set for AIX コンパイラー用にコードが生成されます。
MFCOB
Micro Focus COBOL コンパイラー用のコードが生成されます。 これは、すべての Linux、UNIX、および Windows オペレーティング・システムにおいて、COBOL プリコンパイラーで TARGET 値が指定されていない場合のデフォルトです。
ANSI_COBOL
ANS X3.23-1985 標準規格と互換性のあるコードが生成されます。
C
現行プラットフォーム上の Db2 によりサポートされる C コンパイラーと互換性のあるコードが生成されます。
CPLUSPLUS
現行プラットフォーム上の Db2 によりサポートされる C++ コンパイラーと互換性のあるコードが生成されます。
FORTRAN
現行プラットフォーム上の Db2 によりサポートされる FORTRAN コンパイラーと互換性のあるコードが生成されます。
TEXT label
パッケージの記述。 最大長は 255 文字です。 また、デフォルト値はブランクです。 このプリコンパイル/bind オプションは、 Db2のサーバーではサポートされていません。
TRANSFORM GROUP
静的 SQL ステートメントが、 ユーザー定義の構造化タイプの値をホスト・プログラムと交換するために使用する、 変換グループ名を指定します。 この変換グループは、動的 SQL ステートメントには使用されません。 また、パラメーターの交換や外部関数またはメソッドの結果にも使用されません。
groupname
SQL ID。長さは最大で 128 バイトです。 グループ名には、修飾子接頭部を含めることはできません。 また、接頭部 SYS はデータベースで使用するために予約されているので、 その接頭部は使用できません。 ホスト変数とやりとりする静的 SQL ステートメントでは、 構造化タイプの値の交換に使用する変換グループの名前は以下のようになります。
  • TRANSFORM GROUPバインド・オプションのグループ名 (ある場合)
  • 元のプリコンパイル時に指定されたTRANSFORM GROUPprepオプションのグループ名 (ある場合)
  • 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 変換のパラメーター・タイプは、入力変数のタイプと互換性がありません。
これらのエラー・メッセージで、yyyyy は SQL エラー・コードによって置き換えられ、 xxxxx は SQL 状態コードによって置き換えられます。
UNSAFENULL
プリコンパイル・オプション UNSAFENULL YES および COMPATIBILITY_MODE ORA を使用すると、NULL 標識が指定されていない場合でも、未指定の標識変数エラーが回避されます。
NO
デフォルトでは、 UNSAFENULL 機能は NOに設定されます。
データ・タイプが NULL を処理できる場合、 アプリケーションは NULL 標識を指定しなければなりません。 NULL 標識が使用されず、結果セットのフェッチ中に 1 つ以上の列データが NULL であることが検出されると、 未指定の標識変数エラーがアプリケーションに返されます。
YES
元は他のデータベース・ベンダーからマイグレーションされたものである Db2 アプリケーションを実行している間に、未指定の標識変数エラー (アプリケーションでプログラムに NULL 標識を指定していない場合に NULL 値が存在すると生成される) を抑止する互換性を提供します。
VALIDATE
データベース・マネージャー が許可エラーおよびオブジェクト未検出エラーをいつ検査するかを決定します。 この妥当性検査には、パッケージ所有者の許可 ID が使用されます。
BIND
プリコンパイル/バインド時に妥当性検査が実行されます。 オブジェクトが 1 つもない場合、または権限がまったく保持されていない場合、エラー・メッセージが作成されます。 SQLERROR CONTINUEを指定すると、エラーメッセージが表示されてもパッケージまたはバインドファイルが生成されますが、エラーのあるステートメントは実行できません。
RUN
バインド時に妥当性検査が行われます。 すべてのオブジェクトが存在し、全権限が保持されていれば、 それ以上実行しても検査は行われません。

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

VERSION
パッケージのバージョン ID を定義します。 このオプションが指定されていない場合、 パッケージ・バージョンは "" (空ストリング) です。
version-id
任意の英数字値であるバージョン識別子を指定します、$、#、@、_、-、または。、 最大 64 文字の長さ。
AUTO
バージョン ID は、整合性トークンから生成されます。 整合性トークンがタイムスタンプの場合(LEVELオプションが指定されない場合)、タイムスタンプはISO文字形式に変換され、バージョン識別子として使用されます。
WCHARTYPE
GRAPHIC データのフォーマットを指定します。
CONVERT
wchar_t 基本タイプを使って宣言されたホスト変数には、 wchar_t 形式のデータが入れられるものとして扱われます。 この形式は、データベースに保存されるグラフィックデータの形式(DBCS形式)と直接互換性がないため、wchar_tホスト変数の入力データは、ANSI C関数wcstombs()を使用して、アプリケーションに代わって暗黙的にDBCS形式に変換されます。 同様に、出力DBCSデータは、ホスト変数に格納される前に、mbstowcs()を使用して暗黙的にwchar_t形式に変換されます。
NOCONVERT
wchar_t 基本タイプを使って宣言されたホスト変数には、 DBCS 形式のデータが入れられるものとして扱われます。 これは、データベースの中で GRAPHIC データ用に使われる形式ですが、 C 言語で採用されている固有の wchar_t 形式とは違うものです。 NOCONVERT を使用すると、グラフィック・データはアプリケーションとデータベースで変換されないため、効率が向上します。 ただし、アプリケーションは、wchar_t 形式のデータが データベース・マネージャーに渡されないようにする責任があります。 このオプションを使用する場合は、 wchar_t ホスト変数を C ワイド文字列関数で処理しないようにし、 ワイド文字リテラル (L-literals) で初期化しないようにしなければなりません。
WITH / WITHOUT TEMPORAL HISTORY
静的 SQL ステートメントまたは動的 SQL ステートメントでシステム期間テンポラル表のデータに対する変更を行ったときに、対応する履歴表を変更するかどうかを指定します。
WITH
システム期間テンポラル表のデータを変更したときに、対応する履歴表を変更するよう指定します。

これはデフォルト・オプションです。

WITHOUT
システム期間テンポラル表のデータを変更したときに、対応する履歴表を変更しないよう指定します。 データベース・マネージャーは、行開始列、行終了列、およびトランザクション開始 ID 列が GENERATED ALWAYS として定義されている場合であっても、 これらの列をオーバーライドする値を提供できます。

このオプションには、DBADM 権限が必要です。

使用上の注意

修正されたソース・ファイルが作成されますが、 これには SQL ステートメントと同じホスト言語ステートメントが入っています。 デフォルトでは、接続が既に確立されているデータベース内にパッケージが作成されます。 パッケージの名前は、ファイル名と同じ (拡張子を取り去って大文字に変換したもの) であり、 最大 8 文字までです。 パッケージ名の最大長は 128 バイトですが、PACKAGE USING オプションが指定されていなければ、ファイル名の最初の 8 文字だけを使用して Db2 の前のバージョンとの互換性が保守されます。 このパッケージ名には、予約済みパッケージ名を使用することはできません。 予約済みパッケージ名について詳しくは、 IDを参照してください。

データベースへの接続が終わると、開始されているトランザクションの下で PREP が実行されます。 次に PREP は COMMIT または ROLLBACK を発行し、現行トランザクションを終了して別のトランザクションを開始します。

既に存在していないスキーマ名を指定してパッケージを作成すると、 そのスキーマが暗黙のうちに作成されます。 スキーマの所有者は SYSIBM になります。 スキーマに対する CREATEIN 特権が PUBLIC に付与されます。

プリコンパイル時には、パッケージが作成され、 EXPLSNAP が指定されない限り、Explain スナップショットは取られません。 スナップショットは、パッケージを作成するユーザーの Explain 表に入れられます。 同じように、Explain 表情報が取得されるのは、 EXPLAIN が指定されていて、パッケージが作成される場合だけです。

1 つでも致命的エラーが発生するか、または 100 を超えるエラーが発生すると、 プリコンパイルは停止してしまいます。 致命的エラーが発生すると、ユーティリティーはプリコンパイルを停止し、 すべてのファイルをクローズしてからパッケージを廃棄します。

パッケージがバインド動作を公開するとき、以下のとおりとなります。
  1. BIND オプション OWNER の暗黙的または明示的な値は、動的 SQL ステートメントの許可検査に使用されます。
  2. BIND オプション QUALIFIER の暗黙的または明示的な値は、 動的 SQL ステートメント内の非修飾オブジェクトを修飾するための暗黙的修飾子として使用されます。
  3. 特殊レジスター CURRENT SCHEMA の値は、修飾には影響しません。

単一の接続中に複数のパッケージが参照される場合、それらのパッケージに準備されたすべての動的SQLステートメントは、その特定のパッケージと適用環境のDYNAMICRULESオプションの指定動作を示します。

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

パッケージを REOPT ONCEまたはREOPT ALWAYSでバインドすると、静的および動的なステートメントのコンパイルとパフォーマンスが変わる可能性があります。

組み込みSQLプログラムの場合、FEDERATED_ASYNCHRONYプリコンパイル・オプションが明示的に指定されない場合、パッケージ内の静的ステートメントはfederated_async構成パラメーターにバインドされます。 FEDERATED_ASYNCHRONYオプションが明示的に指定された場合、その値はパッケージのバインドに使用され、特殊レジスターの初期値にもなります。 指定されていない場合、データベース・マネージャー構成パラメーターの値が特殊レジスターの初期値として使用されます。 FEDERATED_ASYNCHRONYプリコンパイル・オプションは、明示的に設定された場合にのみ動的SQLに影響を与えます。