SET OPTION
SET OPTION ステートメントは、SQL ステートメントで使用される処理オプションを設定します。
呼び出し
このステートメントは、REXX プロシージャーで使用、またはアプリケーション・プログラムに組み込むことができます。 REXX プロシージャーで使用する場合、このステートメントは実行可能ステートメントです。 アプリケーション・プログラムに組み込む場合、このステートメントは実行可能ではなく、 他のどの SQL ステートメントよりも先に行う必要があります。このステートメントは、動的に準備することができません。
権限
権限は不要です。
構文
.-,---------------------------------------. V | >>-SET OPTION----+-ALWBLK = --alwblk-option------------+-+----->< +-ALWCPYDTA = --alwcpydta-option------+ +-CLOSQLCSR = --closqlcsr-option------+ +-CNULIGN = --cnulign-option----------+ +-CNULRQD = --cnulrqd-option----------+ +-COMMIT = --commit-option------------+ +-COMPILEOPT = --compile-option-------+ +-CONACC = --concurrent-access-option-+ +-DATFMT = --datfmt-option------------+ +-DATSEP = --datsep-option------------+ +-DBGVIEW = --dbgview-option----------+ +-DECFLTRND = --decfltrnd-option------+ +-DECMPT = --decmpt-option------------+ +-DECRESULT = --decresult-option------+ +-DFTRDBCOL = --dftrdbcol-option------+ +-DLYPRP = --dlyprp-option------------+ +-DYNDFTCOL = --dyndftcol-option------+ +-DYNUSRPRF = --dynusrprf-option------+ +-EVENTF = --eventf-option------------+ +-EXTIND = --extind-option------------+ +-LANGID = --langid-option------------+ +-MONITOR = --monitor-option----------+ +-NAMING = --naming-option------------+ +-OPTLOB = --optlob-option------------+ +-OUTPUT = --output-option------------+ +-RDBCNNMTH = --rdbcnnmth-option------+ +-SQLCA = --sqlca-option--------------+ +-SQLCURRULE = --sqlcurrule-option----+ +-SQLPATH = --sqlpath-option----------+ +-SRTSEQ = --srtseq-option------------+ +-SYSTIME = --systime-option----------+ +-TGTRLS = --tgtrls-option------------+ +-TIMFMT = --timfmt-option------------+ +-TIMSEP = --timsep-option------------+ '-USRPRF = --usrprf-option------------'
alwblk-option |--+-*READ----+-------------------------------------------------| +-*NONE----+ '-*ALLREAD-' alwcpydta-option |--+-*YES------+------------------------------------------------| +-*NO-------+ '-*OPTIMIZE-' closqlcsr-option |--+-*ENDACTGRP-+-----------------------------------------------| +-*ENDMOD----+ +-*ENDPGM----+ +-*ENDSQL----+ '-*ENDJOB----' cnulign-option |--+-*YES-+-----------------------------------------------------| '-*NO--' cnulrqd-option |--+-*YES-+-----------------------------------------------------| '-*NO--' commit-option |--+-*CHG--+----------------------------------------------------| +-*NONE-+ +-*CS---+ +-*ALL--+ '-*RR---'
compile-option |--+-*NONE-------------------+----------------------------------| '-compile-string-constant-' concurrent-access-option |--+-*CURCMT-+--------------------------------------------------| +-*WAIT---+ '-*DFT----'
datfmt-option |--+-*JOB-+-----------------------------------------------------| +-*ISO-+ +-*EUR-+ +-*USA-+ +-*JIS-+ +-*MDY-+ +-*DMY-+ +-*YMD-+ '-*JUL-' datsep-option |--+-*JOB----+--------------------------------------------------| +-*SLASH--+ +-'/'-----+ +-*PERIOD-+ +-'.'-----+ +-*COMMA--+ +-','-----+ +-*DASH---+ +-'-'-----+ +-*BLANK--+ '-' '-----' decfltrnd-option |--+-*CEILING--+------------------------------------------------| +-*DOWN-----+ +-*FLOOR----+ +-*HALFDOWN-+ +-*HALFEVEN-+ +-*HALFUP---+ '-*UP-------' decmpt-option |--+-*PERIOD-+--------------------------------------------------| +-*COMMA--+ +-*SYSVAL-+ '-*JOB----' decresult-option .-31------------. |--(--+-max-precision-+--+-----------------------------------------------+--)--| | .-31--------. | '-,--+-max-scale-+--+-------------------------+-' | .-0----------------. | '-,--+-min-divide-scale-+-' dbgview-option |--+-*NONE---+--------------------------------------------------| +-*SOURCE-+ +-*STMT---+ '-*LIST---' dftrdbcol-option |--+-*NONE-------+----------------------------------------------| '-schema-name-' dlyprp-option |--+-*YES-+-----------------------------------------------------| '-*NO--' dyndftcol-option |--+-*YES-+-----------------------------------------------------| '-*NO--' dynusrprf-option |--+-*OWNER-+---------------------------------------------------| '-*USER--' eventf-option |--+-*YES-+-----------------------------------------------------| '-*NO--' extind-option |--+-*YES-+-----------------------------------------------------| '-*NO--' langid-option |--+-*JOB--------+----------------------------------------------| +-*JOBRUN-----+ '-language-ID-'
monitor-option |--+-*USER---+--------------------------------------------------| '-*SYSTEM-' naming-option |--+-*SYS-+-----------------------------------------------------| '-*SQL-' optlob-option |--+-*YES-+-----------------------------------------------------| '-*NO--' output-option |--+-*NONE--+---------------------------------------------------| '-*PRINT-' rdbcnnmth-option |--+-*DUW-+-----------------------------------------------------| '-*RUW-' sqlca-option |--+-*YES-+-----------------------------------------------------| '-*NO--' sqlcurrule-option |--+-*DB2-+-----------------------------------------------------| '-*STD-' sqlpath-option |--+-*LIBL----------------+-------------------------------------| '-path-string-constant-' srtseq-option |--+-*JOB---------------------------------+---------------------| +-*HEX---------------------------------+ +-*JOBRUN------------------------------+ +-*LANGIDUNQ---------------------------+ +-*LANGIDSHR---------------------------+ | .-*LIBL/--------. | '-+---------------+--srtseq-table-name-' +-*CURLIB/------+ '-library-name/-' systime-option |--+-*YES-+-----------------------------------------------------| '-*NO--' tgtrls-option |----VxRxMx-----------------------------------------------------| timfmt-option |--+-*HMS-+-----------------------------------------------------| +-*ISO-+ +-*EUR-+ +-*USA-+ '-*JIS-' timsep-option |--+-*JOB----+--------------------------------------------------| +-*COLON--+ +-':'-----+ +-*PERIOD-+ +-'.'-----+ +-*COMMA--+ +-','-----+ +-*BLANK--+ '-' '-----' usrprf-option |--+-*OWNER--+--------------------------------------------------| +-*USER---+ '-*NAMING-'
説明
- ALWBLK
- データベース・マネージャーが行ブロッキングを使用できる
かどうか、およびブロッキングを読み取り専用カーソルに使用できる範囲を
指定します。
このオプションは、REXX では無視されます。
- *ALLREAD
- COMMIT が *NONE、*CHG、または *CS の場合、読み取り専用カーソルでは行がブロックされます。プログラム内にある、明示的に更新できないカーソルはすべて EXECUTE または EXECUTE IMMEDIATE ステートメントが
そのプログラム内にある可能性があっても、読み取り専用処理用にオープンされます。
*ALLREAD を指定すると、
- *READ で許可されているブロッキングに加えて、コミットメント制御レベル *CHG および *CS のもとでの行ブロッキングが可能になります。
- プログラム内のほとんどすべての読み取り専用カーソルのパフォーマンスを上げることができますが、
以下のやり方で照会が制限されます。
- ロールバック (ROLLBACK) コマンド、ホスト言語での ROLLBACK ステートメント、
または ROLLBACK HOLD SQL ステートメントは、次のような場合には読み取り専用カーソルの位置変更をしません。
- カーソルを含むプログラムまたはルーチンの作成時に ALWBLK(*ALLREAD) が 指定された場合
- カーソルを含むプログラムまたはルーチンの作成時に ALWBLK(*READ) および ALWCPYDTA(*OPTIMIZE) が指定された場合
- 位置指定 UPDATE または DELETE ステートメントを動的に実行 (例えば、EXECUTE IMMEDIATE を使用して) しても、 カーソルの DECLARE ステートメントに FOR UPDATE 文節が含まれていない場合は、 そのカーソル内の行を更新することはできません。
- ロールバック (ROLLBACK) コマンド、ホスト言語での ROLLBACK ステートメント、
または ROLLBACK HOLD SQL ステートメントは、次のような場合には読み取り専用カーソルの位置変更をしません。
- *NONE
- カーソルに関するデータの検索のために、行はブロックされません。
*NONE を指定すると、
- 検索されるデータが必ず現行のデータになります。
- 照会用のデータの最初の行を検索するために要する時間が短縮される場合があります。
- 照会がクローズする前に、その照会の最初の数行しか検索されないときは、 データベース・マネージャーがプログラムによって使用されないデータ行のブロックを検索するのを、 取り止めるようにします。
- 多数の行を検索する照会の場合、その照会全体のパフォーマンスを低下させる場合があります。
- *READ
- 次の場合に、カーソルに関するデータの読み取り専用検索で、行がブロックされます。
- COMMIT パラメーターに *NONE が指定され、コミットメント制御が使用されないことが指示されたとき。
- FOR READ ONLY 文節によってカーソルが宣言されたとき、またはカーソルに関して 位置指定 UPDATE ステートメントまたは DELETE ステートメントを実行できる動的ステートメントがないとき。
*READ を指定すると、上記の条件を満たし、かつ大量の行を検索する 照会の全体のパフォーマンスを上げることができます。
- ALWCPYDTA
- データのコピーを SELECT ステートメント内で使用できるかどうかを指定します。
このオプションは、REXX では無視されます。
- *OPTIMIZE
- システムが、データベースから直接検索されたデータを使用するか、 そのデータのコピーを使用するかを決定します。 この決定は、どちらの方法が最高のパフォーマンスを発揮するかに基づいて行われます。 COMMIT が *CHG または *CS で、ALWBLK が *ALLREAD でない場合、または COMMIT が *ALL または *RR の場合には、 照会の実行が必要な場合に限りデータのコピーが使用されます。
- *YES
- データのコピーは、必要な場合にだけ使用されます。
- *NO
- データのコピーを使用することはできません。そのデータの一時コピーが照会の実行に必要な場合、 エラー・メッセージが戻されます。
- CLOSQLCSR
- SQL カーソルが暗黙的にクローズされるとき、SQL 準備済みステートメントが暗黙的に廃棄され、
LOCK TABLE ロックが解除されることを指定します。SQL カーソルは、CLOSE、COMMIT、
または ROLLBACK (HOLD はなし) の各 SQL ステートメントを出すと、明示的にクローズされます。
このオプションは、REXX では無視されます。*ENDACTGRP および *ENDMOD は、ILE プログラム
およびモジュール、SQL 関数、SQL プロシージャー、または SQL トリガーが使用するためのものです。*ENDPGM、*ENDSQL、および *ENDJOB は、非 ILE プログラムが使用します。
SQL スカラー関数、SQL プロシージャー、 および SQL トリガーは、デフォルトとして *ENDMOD を使用します。SQL 表関数は常に *ENDACTGRP を使用して作成されます。
- *ENDACTGRP
- 活動化グループが終了すると、SQL カーソルはクローズし、SQL 準備済みステートメントは暗黙的に廃棄され、 LOCK TABLE ロックは解除されます。
- *ENDMOD
- モジュールが終了すると、SQL カーソルはクローズし、SQL 準備済みステートメントは暗黙的に廃棄されます。 LOCK TABLE ロックは、呼び出しスタックの最初の SQL プログラムが終了すると解除されます。
- *ENDPGM
- プログラムが終了すると、SQL カーソルはクローズし、SQL 準備済みステートメントは廃棄されます。 LOCK TABLE ロックは、呼び出しスタックの最初の SQL プログラムが終了すると解除されます。
- *ENDSQL
- SQL カーソルは、呼び出しから次の呼び出しまでの間もオープンしたままで、 新たに SQL OPEN 実行しなくても取り出すことができます。 この場合、呼び出しスタック上で高位にあるプログラムの 1 つが、少なくとも 1 個の SQL ステートメントを 実行していなければなりません。呼び出しスタックの最初の SQL プログラムが終了すると、SQL カーソルはクローズし、SQL 準備済みステートメントは廃棄され、LOCK TABLE ロックは解除されます。最初に呼び出された SQL プログラム (呼び出しスタック上の最初の SQL プログラム) に *ENDSQL が指定されると、そのプログラムは *ENDPGM が指定された場合と同様に扱われます。
- *ENDJOB
- SQL カーソルは、呼び出しから次の呼び出しまでの間もオープンしたままで、 新たに SQL OPEN 実行しなくても取り出すことができます。 呼び出しスタック上で高位にあるプログラムが、SQL ステートメントを実行している必要はありません。 呼び出しスタックの最初の SQL プログラムが終了しても、SQL カーソルはオープンしたままで、 SQL 準備済みステートメントは保存され、LOCK TABLE ロックは保持されます。 ジョブが終了すると、SQL カーソルはクローズされ、SQL 準備済みステートメントは廃棄され、 LOCK TABLE ロックは解除されます。
- CNULIGN
- 文字およびグラフィック・ホスト変数に NUL 終了文字を無視するかどうかを指定します。このオプションは、C および C++ プログラム内の SQL ステートメントにしか使用されません。
このオプションは、SQL 関数、SQL プロシージャー、または SQL トリガーで は使用できません。
- *YES
- NUL 文字で終了するように定義された文字およびグラフィックのホスト変数は、INSERT ステートメントと UPDATE ステートメントの固定長の変数として扱われます。 NUL 終了文字は、データの一部と見なされます。
- *NO
- NUL 終了の文字およびグラフィックのホスト変数が、INSERT ステートメントと UPDATE ステートメントに NUL 終了文字を使用します。
- CNULRQD
- 文字およびグラフィック・ホスト変数に NUL 終了文字を戻すかどうかを指定します。
このオプションは、C および C++ プログラム内の SQL ステートメントにしか使用されません。
このオプションは、SQL 関数、SQL プロシージャー、または SQL トリガーで は使用できません。
- *YES
- 出力の文字およびグラフィック・ホスト変数に、常に NUL 終了文字が含まれます。 NUL 終了文字用のスペースが不足している場合、データが切り捨てられ、NUL 終了文字が追加されます。 入力の文字およびグラフィック・ホスト変数には、NUL 終了文字が必須です。
- *NO
- 出力の文字およびグラフィック・ホスト変数の場合、ホスト変数の長さがデータとまったく同じ場合、 NUL 終了文字は戻されません。入力の文字およびグラフィック・ホスト変数には、NUL 終了文字は必要ありません。
- COMMIT
- 使用される分離レベルを指定します。REXX では、ソースで参照されるファイルはこのオプションの影響を受けません。
SQL ステートメントで参照される表、ビュー、およびパッケージだけが影響を受けます。分離レベルの詳細について
は、分離レベルを参照してください。
- *CHG
- 非コミット読み取りの分離レベルを指定します。
- *NONE
- コミットなしの分離レベルを指定します。REXX プロシージャーに DROP SCHEMA ステートメントが入っている場合、 *NONE を使用する必要があります。
- *CS
- カーソル固定の分離レベルを指定します。
- *ALL
- 読み取り固定の分離レベルを指定します。
- *RR
- 反復可能読み取りの分離レベルを指定します。
- COMPILEOPT
- コンパイラー・コマンドで使用する追加のパラメーターを指定します。
COMPILEOPT ストリングは、プリコンパイラーによって作成されたコンパイラー・コマンドに追加されます。
ストリングのどこかに 'INCDIR(' が存在する場合、プリコンパイラーは SRCSTMF パラメーターを使用して
コンパイラーを呼び出します。
ストリングの内容は妥当性検査されません。
不正なパラメーターが存在する場合、コンパイラー・コマンドはエラーを発行します。
プリコンパイラーがコンパイラーに渡すキーワードのいずれかを使用すると、
パラメーターが重複するためにコンパイラー・コマンドは失敗します。
プリコンパイラーがコンパイラー・コマンド用に生成するパラメーターのリストについては、
「組み込み SQL プログラミング」トピック集を参照してください。
このオプションは、REXX では無視されます。
このオプションは、SQL 関数、SQL プロシージャー、または SQL トリガーで は使用できません。
- *NONE
- コンパイラー・コマンドで使用される追加のパラメーターはありません。
- character-string
- コンパイラー・オプションを含む 5000 文字以下の文字定数。
- CONACC
- 選択ステートメントで使用する同時アクセスの解決を指定します。
- *CURCMT
- データベース・マネージャーが更新プロセスまたは削除プロセスの過程にある行を検出するときに、現時点でコミット済みのバージョンのデータを使用するように指定します。挿入プロセスの過程に行は、スキップされます。この値は、分離レベル *CS が可能な場合に有効です。
- *WAIT
- 別のトランザクションによって更新プロセスまたは削除プロセスにあるデータのコミットまたはロールバックを待機するように指定します。この値は、分離レベル *CS および *ALL が可能な場合に有効です。
- *DFT
- 対象プログラムに関して、同時アクセス・オプションが明示的に設定されないように指定します。プログラムの呼び出し時に有効な値が使用されます。
- DATFMT
- 日付結果列にアクセスするときに使用する形式を指定します。日付の出力フィールドは、
すべて指定した形式で戻されます。入力日付ストリングのときは、日付が有効な形式で指定されたかどうかを判別するために、
指定した値が使用されます。注: *USA、*ISO、*EUR、または *JIS の形式を使用する入力日付ストリングは、 常に有効です。
- *JOB:
- ジョブに指定された形式が使用されます。ジョブの現行日付形式を決定するには、 ジョブ表示 (DSPJOB) コマンドを使用してください。
- *ISO
- 国際標準化機構 (ISO) の日付形式 (yyyy-mm-dd) が使用されます。
- *EUR
- 欧州の日付形式 (dd.mm.yyyy) が使用されます。
- *USA
- 米国の日付形式 (mm/dd/yyyy) が使用されます。
- *JIS
- 日本工業規格 (JIS) の日付形式 (yyyy-mm-dd) が使用されます。
- *MDY
- 日付形式 (mm/dd/yy) が使用されます。
- *DMY
- 日付形式 (dd/mm/yy) が使用されます。
- *YMD
- 日付形式 (yy/mm/dd) が使用されます。
- *JUL
- 年間通算日形式 (yy/ddd) が使用されます。
- DATSEP
- 日付の結果列にアクセスする場合に使用される、区切り文字を指定します。注: このパラメーターは、*JOB、*MDY、*DMY、*YMD、または *JUL が DATFMT パラメーターで 指定されたときだけ適用されます。
- *JOB
- そのジョブで指定されている日付区切り文字が使用されます。ジョブ表示 (DSPJOB) コマンドを使用すると、 ジョブの現在の値を確かめることができます。
- *SLASH または '/'
- スラッシュ (/) が使用されます。
- *PERIOD または '.'
- ピリオド (.) が使用されます。
- *COMMA または ','
- コンマ (,) が使用されます。
- *DASH または '-'
- ダッシュ (-) が使用されます。
- *BLANK または ' '
- ブランク ( ) が使用されます。
- DBGVIEW
- システムのデバッグ機能によってオブジェクトをデバッグできるかどうか、またコンパイラーが提供するデバッグ情報のタイプを指定します。
DBGVIEW パラメーターは、SQL 関数、プロシージャー、およびトリガーの本体でのみ指定できます。
CREATE PROCEDURE または ALTER PROCEDURE ステートメントの DEBUG MODE が指定される場合は、SET OPTION ステートメントの DBGVIEW オプションを指定してはなりません。
選択可能な項目は、次のとおりです。
- *NONE
- デバッグ表示は生成されません。
- *SOURCE
- SQL ステートメント・ソースを使用して、コンパイル 済みモジュール・オブジェクトをデバッグできます。 *SOURCE を指定した場合、変更されたソースは作成された関数、プロシージャー、またはトリガーと 同じスキーマ内のソース・ファイル QSQDSRC に保管されます。
- *STMT
- プログラム・ステートメント番号と記号 ID を使用して、コン パイル済みモジュール・オブジェクトをデバッグできます。
- *LIST
- コンパイル済みモジュール・オブジェクトのデバッグのリスト表示を生成します。
DEBUG MODE を指定せずに SET OPTION ステートメント内の DBGVIEW オプションを指定した場合、プロシージャーを Unified Debugger でデバッグすることはできませんが、システム・デバッグ機能を使用してデバッグすることは可能です。 DEBUG MODE オプションも DBGVIEW オプションも指定しない場合は、CURRENT DEBUG MODE 特殊レジスターでのデバッグ・モードが使用されます。
- DECFLTRND
- 静的 SQL ステートメントに使用する DECFLOAT 丸めモードを指定します。選択可能な項目は、次のとおりです。
- *CEILING
- 正の無限大の方向に丸めます。廃棄される桁がすべてゼロであるか、符号が負である場合、廃棄される桁が除去されることを除いて結果は変わりません。それ以外の場合、結果の係数は 1 だけ増分されます (切り上げられます)。
- *DOWN
- ゼロの方向に丸めます (切り捨て)。廃棄される桁は無視されます。
- *FLOOR
- 負の無限大の方向に丸めます。廃棄される桁がすべてゼロであるか、符号が正である場合、廃棄される桁が除去されることを除いて結果は変わりません。それ以外の場合、符号は負となり、結果の係数は 1 だけ増分されます。
- *HALFDOWN
- 最も近い値に丸めます。等距離である場合、切り捨てます。廃棄される桁が左隣の桁の値の半分 (0.5) より大きい値を表す場合、結果の係数は 1 増分されます (切り上げ)。そうでない場合、廃棄される桁は無視されます。
- *HALFEVEN
- 最も近い値に丸めます。等距離である場合、最後の桁が偶数になるように丸めます。廃棄される桁が左隣の桁の値の半分 (0.5) より大きい値を表す場合、結果の係数は 1 増分されます (切り上げ)。半分未満の場合、結果の係数は調整されません (つまり、廃棄される桁は無視されます)。上記がいずれも該当しない場合 (つまり正確に半分を表す場合)、結果の係数は、右端の桁が偶数の場合は変更されず、右端の桁が奇数 (偶数桁を作成するために) の場合は 1 だけ増分されます (切り上げられます)。
- *HALFUP
- 最も近い値に丸めます。等距離である場合、切り上げます。廃棄される桁が左隣の桁の値の半分 (0.5) 以上の値を表す場合、結果の係数は 1 増分されます (切り上げられます)。そうでない場合、廃棄される桁は無視されます。
- *UP
- ゼロから離れる方向に丸めます。廃棄される桁がすべてゼロである場合、廃棄される桁が除去されることを除いて結果は変わりません。それ以外の場合、結果の係数は 1 だけ増分されます (切り上げられます)。
- DECMPT
- 小数点を表すのに使用する記号を指定します。選択可能な項目は、次のとおりです。
- *PERIOD
- 小数点を表すのにピリオドを使用します。
- *COMMA
- 小数点を表すのにコンマを使用します。
- *SYSVAL
- 小数点の表現は、システム値 (QDECFMT) に従います。
- *JOB
- 小数点を表すのに、ジョブ値 (DECFMT) を使用します。
- DECRESULT
- 10 進数での算術など、10 進演算で使用する最大精度、最大位取り、および最小除算位取りを指定します。
指定する制限は、NUMERIC および DECIMAL データ・タイプだけに適用されます。
- max-precision
- 10 進演算から戻される最大精度を示す整数定数。 この値は 31 または 63 となります。 デフォルト値は 31 です。
- max-scale
- 10 進演算から戻される最大位取りを示す整数定数。 この値は、0 から最大精度までの範囲から指定できます。 デフォルト値は 31 です。
- min-divide-scale
- 割り算演算から戻される最小位取りを示す整数定数。 この値は、1 から 9 の範囲内でなければならず、 max-scale より大きくてはなりません。デフォルト は 0 で、0 は最小の位取りが指定されないことを示します。
- DFTRDBCOL
- 表、ビュー、索引、および SQL パッケージの非修飾名に使用するスキーマ
名を指定します。このパラメーターは、静的 SQL ステートメントにのみ適用します。このオプションは、REXX では無視されます。
- *NONE
- OPTION プリコンパイル・パラメーターに指定された、 または SET OPTION NAMING オプションによって指定された命名規則が使用されます。
- schema-name
- スキーマの名前を指定します。この値は、OPTION プリコンパイル・パラメーターに指定された、 または SET OPTION NAMING オプションによって指定された命名規則の代わりに使用されます。
- DLYPRP
- PREPARE ステートメントの動的ステートメント妥当性検査を、
OPEN、
EXECUTE、または DESCRIBE ステートメントが実行されるまで遅らせるかどうかを指定します。
妥当性検査を遅らせると、冗長妥当性検査が行われなくなるのでパフォーマンスが上がります。
このオプションは、REXX では無視されます。
- *NO
- 動的ステートメント妥当性検査は遅れません。動的ステートメントが準備されると、 アクセス・プランの妥当性検査が行われます。動的ステートメントが OPEN または EXECUTE ステートメントで使用されると、 アクセス・プランの妥当性検査が再度行われます。動的ステートメントによって参照されるオブジェクトの 権限または存在は変わる可能性があるため、OPEN または EXECUTE ステートメントを 出した後でも SQLCODE または SQLSTATE をチェックして、その動的ステートメントがまだ有効であるか確認する必要があります。
- *YES
- 動的ステートメントの妥当性検査は、その動的ステートメントが OPEN、EXECUTE、
または DESCRIBE SQL ステートメントで使用されるまで遅れます。動的ステートメントが使用された時点で、
妥当性検査は完了し、アクセス・プランが作成されます。*YES を指定する場合、
OPEN、EXECUTE、または DESCRIBE ステートメントを実行した後に SQLCODE および SQLSTATE をチェックして、
その動的ステートメントが有効であるか確認する必要があります。注: *YES を指定すると、PREPARE ステートメントで INTO 文節が使用された場合、 または DESCRIBE ステートメントで、そのステートメントに OPEN が出される前に動的ステートメントが使用された場合、 パフォーマンスは上がりません。
- DYNDFTCOL
- DFTRDBCOL パラメーターに指定されたスキーマ名が、動的ステートメン
トにも使用されることを指定します。このオプションは、REXX では無視されます。
- *NO
- 表、ビュー、索引、および SQL パッケージの非修飾名として DFTRDBCOL に指定された値を、 動的 SQL ステートメントには使用しません。OPTION プリコンパイル・パラメーターに指定された、 または SET OPTION NAMING オプションによって指定された命名規則が使用されます。
- *YES
- DFTRDBCOL に指定されたスキーマ名が、動的 SQL ステートメントの中 で、表、ビュー、索引、および SQL パッケージの非修飾名として使用されます。
- DYNUSRPRF
- 動的 SQL ステートメントにユーザー・プロファイルを使用することを指定します。
このオプションは、REXX では無視されます。
- *USER
- ローカル動的 SQL ステートメントが、ジョブのユーザー・プロファイルのもとで実行されます。 分散動的 SQL ステートメントは、アプリケーション・サーバー・ジョブのユーザー・プロファイルのもとで実行されます。
- *OWNER
- ローカル動的 SQL ステートメントが、プログラムの所有者のユーザー・プロファイルのもとで実行されます。 分散動的 SQL ステートメントは、SQL パッケージの所有者のユーザー・プロファイルのもとで実行されます。
- EVENTF
- イベント・ファイルを生成するかどうかを指定します。
連携開発環境/400® (CODE/400) は、イベント・ファイルを使用して、CODE/400 エディターと統合されたエラー・フィードバックを提供します。
- *YES
- コンパイラーは、連携開発環境/400 (CODE/400 が使用するイベント・ファイルを生成します。
- *NO
- コンパイラーは、連携開発環境/400 (CODE/400 が使用するイベント・ファイルを生成しません。
- EXTIND
- SQL ステートメントで渡される標識変数値を扱う方法を指定します。
- *NO
- 拡張標識変数を使用可能にしないこと、および選択ステートメント の暗黙または明示的な UPDATE 文節内では非更新可能な列を使用できないことを指定します。
- *YES
- 拡張標識変数を使用可能にすること、および SELECT ステートメント の暗黙または明示的な UPDATE 文節内では非更新可能な列を使用できることを指定します。
- LANGID
- SRTSEQ(*LANGIDUNQ) または SRTSEQ(*LANGIDSHR) が指定されているときに使用される、言語 ID を指定します。
- *JOB または *JOBRUN
- そのジョブの LANGID の値が使用されます。
分散アプリケーションの場合、LANGID(*JOBRUN) が有効なのは、SRTSEQ(*JOBRUN) も指定されている場合だけです。
- language-id
- 使用したい言語の ID を指定します。言語 ID として使用できる値についての説明は、「グローバリゼーション」トピック集にあるトピック言語 ID を参照してください。
- MONITOR
- データベース・モニターの実行時にステートメントがユーザー・ステートメントとして識別されるか、またはシステム・ステートメントとして識別されるかを指定します。
- *USER
- SQL ステートメントはユーザー・ステートメントとして識別されます。 これはデフォルトです。
- *SYSTEM
- SQL ステートメントはシステム・ステートメントとして識別されます。
- NAMING
- SQL 命名規則とシステム命名規則のどちらを使用するかを指定します。
このオプションは、SQL 関数、SQL プロシージャー、または SQL トリガーで
は使用できません。
選択可能な項目は、次のとおりです。
- *SYS
- システム命名規則が使用されます。
- *SQL
- SQL 命名規則が使用されます。
- OPTLOB
- XML および LOB へのアクセスが、DRDA® を介してアクセスする場合に最適化できるかどうかを指定します。選択可能な項目は、次のとおりです。
- *YES
- LOB および XML アクセスは最適化されます。カーソルの最初の FETCH によって、それ以降のすべての FETCH においてそのカーソルが LOB および XML でどのように使用されるかが決定されます。このオプションは、そのカーソルがクローズされるまで有効です。
最初の FETCH で LOB または XML 列にアクセスするためにロケーターを使用すると、それ以降、そのカーソルの FETCH で、その LOB または XML 列を LOB または XML 変数内に取り出すことはできません。
最初の FETCH で LOB または XML 変数内に LOB または XML 列が置かれると、それ以降、そのカーソルの FETCH でその列用にロケーターを使用することができません。
- *NO
- LOB アクセスは最適化されません。列を LOB ロケーター内に取り出すか、 LOB 変数内に取り出すかについての制約はありません。このオプションによって、 パフォーマンスが低下する場合があります。
- OUTPUT
- プリコンパイラーおよびコンパイラー・リストを生成するかどうかを指定し
ます。OUTPUT パラメーターは、SQL 関数、プロシージャー、およびトリガーの本体
でのみ指定できます。選択可能な項目は、次のとおりです。
- *NONE
- プリコンパイラーおよびコンパイラー・リストは生成されません。
- プリコンパイラーおよびコンパイラー・リストが生成されます。
- RDBCNNMTH
- CONNECT ステートメントに使用する意味体系を指定します。このオプションは、REXX では無視されます。
- *DUW
- CONNECT (タイプ 2) の意味体系は、分散作業単位をサポートするのに使用されます。 追加のリレーショナル・データベースに対して CONNECT ステートメントを連続して使用しても、 それ以前の接続は切断されません。
- *RUW
- CONNECT (タイプ 1) の意味体系は、リモート作業単位をサポートするのに使用されます。 連続する CONNECT ステートメントによって、新しい接続が確立される前に直前の接続が切断されることになります。
- SQLCA
- SQLCA 内のフィールドが各 SQL ステートメントの後に設定されるかどうかを指定します。
SQLCA オプションを指定できるのは、ILE C、ILE C++、ILE COBOL、および ILE RPG だけです。
このオプションは、SQL 関数、SQL プロシージャー、または SQL トリガーで
は使用できません。
選択可能な項目は、次のとおりです。
- *YES
- SQLCA 内のフィールドは各 SQL ステートメントの後に設定されます。 ユーザー・プログラムは、SQL ステートメントの実行の後に SQLCA 内のすべての値を参照できます。
- *NO
- SQLCA 内のフィールドは各 SQL ステートメントの後に設定されません。
ユーザー・プログラムは GET DIAGNOSTICS ステートメントを使用して、
SQL ステートメントの実行に関する情報を検索します。
SQLCA(*NO) は、通常は SQLCA(*YES) よりも良好に実行します。
他のホスト言語では SQLCA が必要となり、 SQLCA 内のフィールドは各 SQL ステートメントの後に設定されます。
- SQLCURRULE
- SQL ステートメントに使用する意味体系を指定します。
- *DB2®
- すべての SQL ステートメントの意味体系は、デフォルトにより、DB2 用に設定された規則に従います。
以下の意味体系は、このオプションによって制御されます。
- 16 進定数が文字データとして処理されます。
- Unicode グラフィック・ストリング定数は UCS-2 (CCSID 13488) です。
- ルーチンまたはトリガーの本体の中の SQL 変数および SQL パラメーターへの割り当てでは、検索割り当て規則が使用されます。
- SQLDA および SQLN 内への SELECT ステートメントの記述が必要な SQLVAR 項目数より少ない場合、結果表に LOB または UDT が含まれる場合にのみ SQLSTATE 01005 が返されます。
- *STD
- すべての SQL ステートメントの意味体系は、デフォルトにより、
ISO および ANSI SQL の規格用に設定された規則に従います。
以下の意味体系は、このオプションによって制御されます。
- 16 進定数が 2 進データとして処理されます。
- Unicode グラフィック・ストリング定数は UTF-16 (CCSID 1200) です。
- ルーチンまたはトリガーの本体の中の SQL 変数および SQL パラメーターへの割り当てでは、記憶域割り当て規則が使用されます。
- SQLDA および SQLN 内への SELECT ステートメントの記述が必要な SQLVAR 項目数より少ない場合、常に SQLSTATE 01005 が返されます。
- SQLPATH
- 静的 SQL ステートメント内で、プロシージャー、関数、
およびユーザー定義タイプを見つけるために使用するパスを指定します。このオプションは、REXX では無視されます。
- *LIBL
- 使用されるパスは、実行時のライブラリー・リストです。
- character-string
- コンマで区切られた 1 つ以上のスキーマ名を持つ文字定数。指定できるのは、システム・スキーマ名だけです。
- SRTSEQ
- SQL ステートメントの中のストリング比較に使用される照合順序表を指定します。
注: *HEX を指定する必要があるのは、REXX プロシージャーを接続するアプリケーション・サーバーが DB2 for i、または V2R3M0 より前のリリース・レベルの IBM® i 製品ではない場合です。
- *JOB または *JOBRUN
- そのジョブの SRTSEQ の値が使用されます。
- *HEX
- 照合順序表は使用しません。照合順序を決定するには、文字の 16 進値を使用します。
- *LANGIDUNQ
- 照合順序表には、コード・ページの各文字ごとに固有の重み付けが含まれていなければなりません。
- *LANGIDSHR
- 指定された LANGID の共用重み付けソート表が使用されます。
- srtseq-table-name
- そのプログラムで使用する照合順序表の名前を指定します。
照合順序表の名前は、次のライブラリー値のいずれかによって修飾できます。
- *LIBL
- そのジョブのライブラリー・リストのユーザーおよびシステム部分のすべてのライブラリーが検索され、見つかった最初の表が使用されます。
- *CURLIB
- ジョブ用の現行ライブラリーが検索されます。 ジョブ用の現行ライブラリーとして指定されたライブラリーがない場合は、QGPL ライブラリーが使用されます。
- library-name
- 検索したいライブラリーの名前を指定します。
- SYSTIME
- CURRENT TEMPORAL SYSTEM_TIME 特殊レジスターが静的および動的 SQL ステートメントに影響するかどうかを指定します。
選択可能な項目は、次のとおりです。
- *YES
- システム期間テンポラル表への参照は、CURRENT TEMPORAL SYSTEM_TIME 特殊レジスターの値の影響を受けます。
- *NO
- システム期間テンポラル表への参照は、CURRENT TEMPORAL SYSTEM_TIME 特殊レジスターの値の影響を受けません。
- TGTRLS
- ユーザーが作成するオブジェクトを使用するオペレーティング・システムの
リリースを指定します。TGTRLS パラメーターは、
SQL 関数、プロシージャー、およびトリガーの本体に指定するか、または、
外部関数またはプロシージャー作成ステートメントの一部としてのみ指定できます。
選択可能な項目は、次のとおりです。
- VxRxMx
- VxRxMx 形式でリリースを指定します。ここで、Vx はバージョン、Rx
はリリース、Mx は修正レベルを表します。例えば、V7R1M0 は、バージョン 7、リリース 1 修正レベル 0 です。オ
ブジェクトは、指定のリリースまたはそれ以降のリリースのオペレーティン
グ・システムがインストールされたシステム上で使用できます。
有効な値は、 現行のバージョン、リリース、および修正レベルによって決ま り、新規リリースのたびに変更されます。データベース・マネージャーによってサポートされる最も古いリリース・レベ ルより前のリリース・レベルを指定すると、サポートされる最も古いリリ ースを示したエラー・メッセージが送られます。
- TIMFMT
- 時刻の結果列にアクセスするときに使用する形式を指定します。
時刻の出力フィールドはすべて指定した形式で戻されます。
入力時刻ストリングの場合は、指定された値を使用して、時刻が有効な形式で指定されているかどうかを判別します。
注: *USA、*ISO、*EUR、または *JIS の形式を使用する入力時刻ストリングは、常に有効です。
- *HMS
- 形式 (hh:mm:ss) が使用されます。
- *ISO
- 国際標準化機構 (ISO) の時刻形式 (hh.mm.ss) が使用されます。
- *EUR
- 欧州の時刻形式 (hh.mm.ss) が使用されます。
- *USA
- 米国の時刻形式 (hh:mm xx) が使用されます。 ここで、xx は AM または PM です。
- *JIS
- 日本工業規格 (JIS) の時刻形式 (hh:mm:ss) が使用されます。
- TIMSEP
- 時刻の結果列にアクセスする場合に使用される区切り文字を指定します。注: このパラメーターは、TIMFMT パラメーターで *HMS が指定されたときだけ適用されます。
- *JOB
- そのジョブに指定されている時刻の区切り文字が使用されます。 ジョブ表示 (DSPJOB) コマンドを使用すると、 ジョブの現在の値を確かめることができます。
- *COLON または ':'
- コロン (:) が使用されます。
- *PERIOD または '.'
- ピリオド (.) が使用されます。
- *COMMA または ','
- コンマ (,) が使用されます。
- *BLANK または ' '
- ブランク ( ) が使用されます。
- USRPRF
- コンパイル済みプログラム・オブジェクトが実行される際に使用されるユーザー・プロファイル (そのプログラム・オブジェクトが静的 SQL ステートメント内の各オブジェクトごとに保有する権限も含む) を指定します。プログラムの所有者またはプログラム・ユーザーのいずれかのプロファイルが、プログラム・オブジェクトがどのオブジェクトを使用できるかを制御するために使用されます。このオプションは、REXX では無視されます。
- *NAMING
- ユーザー・プロファイルは、命名規則によって決定されます。 命名規則が *SQL の場合、USRPRF(*OWNER) が使用されます。命名規則が *SYS の場合、USRPRF(*USER) が使用されます。
- *USER
- プログラム・オブジェクトを実行しているユーザーのプロファイルが使用されます。
- *OWNER
- プログラムの所有者とプログラム・ユーザーの両方のユーザー・プロファイルが、 プログラムの実行時に使用されます。
注
デフォルト値: オプションのデフォルト値は、言語、オブジェクト・タイプ、および作成時に有効なオプションに依存します。
- SQL プロシージャー、SQL 関数、または SQL トリガーの作成時のオプションのデフォルト値は、オブジェクトの作成時に有効なデフォルト値となります。 例えば、SQL プロシージャーが作成され、その時点の COMMIT オプションが *CS である場合、*CS が COMMIT のデフォルト・オプションになります。 これにより、各オプションは SET OPTION ステートメント内で検出されると更新されます。
- REXX 以外のアプリケーション・プログラムでは、オプションのデフォルト値は、CRTSQLxxx コマンドで指定した値になります。 これにより、各オプションは、SET OPTION ステートメント内で検出されると更新されます。 SET OPTION ステートメントはすべて、他のどの組み込み SQL よりも先に置 く必要があります。
- REXX プロシージャーの開始時に、オプションはそれぞれのデフォルト値に設定されます。 各オプションのデフォルト値は、構文図に最初にリストされている値です。 オプションが SET OPTION ステートメントによって変更されると、新しい値は、 そのオプションが再度変更されるか、またはその REXX プロシージャーが終了するまで有効です。
代替構文: 以下のキーワードは、旧リリースとの互換性を維持するためにサポートされている同義語です。 これらのキーワードは標準キーワードではないので、原則として使用しないようにしてください。
- *UR は *CHG の同義語として使用できます。
- *NC は *NONE の同義語として使用できます。
- *RS は *ALL の同義語として使用できます。
例
例 1 : 分離レベルを *ALL に、命名モードを SQL 名に設定します。
EXEC SQL SET OPTION COMMIT =*ALL, NAMING =*SQL
例 2 : 日付形式を欧州形式に、分離レベルを *CS に、小数点をコンマに設定します。
EXEC SQL SET OPTION DATFMT = *EUR, COMMIT = *CS, DECMPT = *COMMA