この項は、プリコンパイラ・オプションを簡単に参照できるように構成されています。プリコンパイラ・オプションをアルファベット順に並べ、オプションごとに用途、構文およびデフォルト値を示しています。さらに「使用上の注意」で、オプションについて説明します。使用上の注意に特に記載がない場合、そのオプションはコマンドライン、インラインまたは構成ファイルのどの方法でも入力できます。
用途
リスト・ファイルが、キャリッジ制御のために各行の最初の列を使用するASA規則に従うかどうかを指定します。
構文
ASACC={YES|NO
}
デフォルト
NO
使用上の注意
インラインでは入力できません。
用途
宣言部で宣言されているかどうか、あるいは型が正しいかどうかに関係なく、SQLCODEが宣言されているとみなすようにOracleプリコンパイラに指示します。ASSUME_SQLCODE=YESと指定すると、リリース1.6以降のOracleプリコンパイラは、この点ではリリース1.5と同様の動作をします。
構文
ASSUME_SQLCODE={YES|NO
}
デフォルト
NO
使用上の注意
インラインでは入力できません。
ASSUME_SQLCODE=NO
と指定すると、次の基準のうち少なくとも1つが満たされた場合にかぎり、SQLCODE
は状態変数として認識されます。
宣言部で完全に正しいデータ型で宣言されている場合。
プリコンパイラで他の状態変数が見つからない場合。
プリコンパイラが宣言部で(完全に正しい型の)SQLSTATE宣言を検出した場合、またはSQLCAのINCLUDE
を検出した場合には、SQLCODEが宣言されているとはみなしません。
ASSUME_SQLCODE=YES
と指定した場合、SQLSTATEおよびSQLCA(Pro*FORTRANのみ)が状態変数として宣言されると、宣言部で宣言されているかどうか、あるいは正しい型かどうかに関係なく、プリコンパイラではSQLCODEが宣言されているものとみなします。このため、リリース1.6.7以降は、この点でリリース1.5と同様の動作をします。
用途
プログラムがデフォルトのユーザー・アカウントに自動的に接続するかどうかを指定します。
構文
AUTO_CONNECT={YES|NO}
デフォルト
NO
使用上の注意
インラインでは入力できません。
AUTO_CONNECT=YES
と指定した場合、実行SQL文を検出する同時に、プログラムでは自動的に次のユーザーIDでOracleに接続を試みます。
<prefix><username>
prefixにはOracle初期化パラメータOS_AUTHENT_PREFIX
の値(デフォルト値はNULL)を指定し、usernameには使用しているオペレーティング・システムのユーザー名またはタスク名を指定します。この場合、コマンドラインに別の値を指定しても、MAXOPENCURORS(10)のデフォルト値は変更できません。
AUTO_CONNECT=NO
(デフォルト)の場合、Oracleに接続するにはCONNECT
文を使用する必要があります。
用途
char型またはchar[n]型のCホスト変数およびそれらに対するポインタのSQLへのデフォルトのマッピングを指定します。
構文
CHAR_MAP={VARCHAR2 | CHARZ | STRING | CHARF}
デフォルト
CHARZ
使用上の注意
旧リリースでは、SQL DECLARE文を使用してCHARなどのcharまたはchar[n]ホスト変数を宣言する必要がありました。外部データ型VARCHAR2およびCHARZが、Oracle7のデフォルト文字マッピングでした。
用途
データベースに対してオープンされる物理接続数の次の増分をアプリケーションで設定できるようにします。
構文
CINCR = 範囲は1から(CMAX-CMIN)。
デフォルト
1
使用上の注意
最初は、CMINにより指定されたとおりに物理接続がすべてサーバーに対してオープンされます。それ以降は、必要な場合にのみ物理接続がオープンされます。パフォーマンスを最適にするには、CMINを、アプリケーションによる実行が計画または予想される同時実行文の合計数に設定する必要があります。デフォルト値は2に設定されます。
用途
コミット文でカーソルをクローズするかどうかを指定します。
構文
CLOSE_ON_COMMIT={YES | NO}
デフォルト
NO
使用上の注意
コマンドラインまたは構成ファイルからのみ入力できます。
CLOSE_ON_COMMITより高いレベルでMODEが指定されていると、MODEが優先されます。たとえば、デフォルトはMODE=ORACLEおよびCLOSE_ON_COMMIT=NOです。ユーザーがコマンドラインでMODE=ANSIを指定すると、コミット時にすべてのカーソルがクローズされます。
CLOSE_ON_COMMIT=NO (MODE=ORACLEの場合)の場合、COMMITまたはROLLBACKを発行しても、クローズされるのはFOR UPDATE句を使用して宣言されたカーソルまたはCURRENT OF句で参照されるカーソルのみです。その他のカーソルはCOMMITまたはROLLBACK文による影響を受けず、オープンされている場合はオープンされたままです。ただし、CLOSE_ON_COMMIT=YES (MODE=ANSIの場合)のときにCOMMITまたはROLLBACKを発行すると、すべてのカーソルがクローズします。
用途
データベースに対してオープンできる物理接続の最大数を指定します。
構文
CINCR = 範囲は1から65535
デフォルト
100
使用上の注意
CMAXの値は、CMIN+CINCR以上である必要があります。この値に達したら、それ以上物理接続をオープンすることはできません。通常のアプリケーションでは、100のデータベース操作を同時実行できれば十分です。ユーザーが適切な値を設定できます。
用途
データベースに対してオープンできる物理接続の最小数を指定します。
構文
CINCR = 範囲は1から(CMAX-CINCR)。
デフォルト
2
使用上の注意
CMAXの値は、CMIN+CINCR以上である必要があります。この値に達したら、それ以上物理接続をオープンすることはできません。通常のアプリケーションでは、100のデータベース操作を同時実行できれば十分です。ユーザーが適切な値を設定できます。
用途
この属性は、プール内の他のすべての物理接続が使用中で、物理接続の合計数がすでに最大値に達している場合に、アプリケーションで繰り返し物理接続を要求する必要があるかどうかを決定します。
構文
CNOWAIT = 範囲は1から65535。
デフォルト
未設定を意味する0。
使用上の注意
物理接続が使用できず、これ以上物理接続をオープンできない場合、この属性が設定されているとエラーが発生します。そうでない場合、コールは別の接続が取得されるまで待機します。デフォルトでは、CNOWAITは設定されないため、スレッドは、エラーを戻すかわりに、空いている接続を取得できるまで待機します。
用途
Pro*C/C++プリコンパイラによって生成されるC関数プロトタイプの書式を指定します。(関数プロトタイプは、関数とその引数のデータ型を宣言します。)プリコンパイラは、Cコンパイラが外部参照を解決できるよう、SQLライブラリ・ルーチンのために関数プロトタイプを生成します。CODEオプションで、プロトタイピングを制御できます。
構文
CODE={ANSI_C | KR_C | CPP}
デフォルト
KR_C
使用上の注意
コマンドラインでは入力できますが、インラインではできません。
ANSI C規格X3.159-1989は、関数プロトタイプを規定しています。CODE=ANSI_Cのとき、Pro*C/C++では、ANSI C規格に準拠する完全な関数プロトタイプが生成されます。次に例を示します。
extern void sqlora(long *, void *);
プリコンパイラでは、他のANSI準拠の構造体(const型修飾子など)も生成できます。
CODE=KR_C(デフォルト)のとき、生成された関数プロトタイプの引数リストは、次のようなコメントになります。
extern void sqlora(/*_ long *, void * _*/);
CコンパイラがX3.159規格に準拠していなければ、CODE=KR_Cを指定します。
CODE=CPPのとき、プリコンパイラではC++互換コードが生成されます。
用途
Pro*FORTRANの場合のみ、COMMON_NAME
オプションは、内部FORTRAN COMMON
ブロックの命名に使用される接頭辞を指定します。ホスト・プログラムは、COMMON
ブロックに直接アクセスしません。しかし、このブロックでは、同じプリコンパイル・ユニット内の2つ以上のプログラム・ユニットにSQL文を含めることができます。
構文
COMMON_NAME=
blockname
デフォルト
入力ファイル名の最初の5文字
使用上の注意
Pro*FORTRANプリコンパイラでは、1つの入力ファイル内のすべてのSQL変数用にCOMMON
ブロックを設定するブロック・データ・サブプログラムという専用プログラム・ファイルを使用します。ブロック・データ・サブプログラムによって、2つのCOMMONブロック(1つはCHARACTER変数用、もう1つはCHARACTER以外の変数用)が定義され、DATA文を使用して変数が初期化されます。
BLOCK DATA <subprogram_name> variable declarations COMMON statements DATA statements END
ホスト・プログラムは、COMMON
ブロックに直接アクセスしません。しかし、これらでは、同じプリコンパイル・ユニット内の2つ以上のプログラム・ファイルにSQL文を含めることができます。
COMMON
ブロックの命名に、プリコンパイラでは入力ファイル名と接尾辞C、DおよびIを使用します。ファイル名の最初の多くても5文字までが使用されます。たとえば、入力ファイル名がACCTSPAY
の場合、COMMON
ブロックには、ACCTSC
、ACCTSD
およびACCTSI
という名前が付けられます。
しかし、異なる出力ファイルで定義されたCOMMON
ブロックには、次の図に示すように同じ名前を付けることができます。
ACCTSPAY.PFO ===> ACCTSC, ACCTSD, ACCTSI in ACCTSPAY.FOR ACCTSREC.PFO ===> ACCTSC, ACCTSD, ACCTSI in ACCTSREC.FOR
ACCTSPAY
とACCTSREC
を1つの実行可能プログラムにリンクさせる場合、リンカーで見えるCOMMON
ブロックは、6つではなく3つです。
この問題を解決するには、入力ファイル名を変更するか、COMMON_NAME
をインラインまたはコマンドラインで次のように指定することで、デフォルトのCOMMON
ブロック名をオーバーライドします。
COMMON_NAME=<block_name>
block_nameは、適切なCOMMON
ブロック名です。たとえば、COMMON_NAME=PAY
を指定した場合、COMMON
ブロックにはPAYC
およびPAYI
という名前が付けられます。block_nameの最初の多くても5文字までが使用されます。
たとえば、COMMON_NAME=PAY
を指定した場合、COMMONブロックにはPAYC
およびPAYI
という名前が付けられます。block_nameの最初の多くても5文字までが使用されます。
COMMON_NAMEをインラインで指定する場合は、そのEXEC ORACLE OPTION
文を必ずFORTRAN PROGRAM、SUBROUTINE
またはFUNCTION
文の前に置く必要があります。
デフォルトのCOMMON
ブロック名が、ユーザー定義のCOMMON
ブロック名と競合する場合、デフォルトの名前はオーバーライドできます。ただし、ユーザー定義のCOMMON
ブロックの名前を変更することをお薦めします。
MULTISUBPROGを指定する場合、COMMON_NAME
は不要です。
用途
SQL99構文のSELECT、INSERT、DELETE、UPDATEおよびDECLARE CURSOR文のカーソル本体がサポートされます。
構文
COMMON_PARSER={YES | NO}
デフォルト
NO
使用上の注意
コマンドラインで入力できます。
用途
使用するコンパイラでマルチバイト・キャラクタ・セットがサポートされているかどうかを、Pro*C/C++プリコンパイラに指定します。これは、マルチバイトのクライアント環境(たとえば、NLS_LANGがマルチバイト・キャラクタ・セットに設定されているとき)で作業する開発者向けです。
構文
COMP_CHARSET={MULTI_BYTE | SINGLE_BYTE}
デフォルト
MULTI_BYTE
使用上の注意
コマンドラインでのみ入力できます。
COMP_CHARSET=MULTI_BYTE(デフォルト)が指定されると、Pro*C/C++では、マルチバイト・キャラクタ・セットをサポートしているコンパイラによりコンパイルされるCコードを生成します。
COMP_CHARSET=SINGLE_BYTEを指定すると、Pro*C/C++では、シングルバイト系のコンパイラ用のCコードが生成され、マルチバイト文字列中のダブルバイト文字の2バイト目がバックスラッシュ(\)に対応するASCII文字である場合に起きる可能性のある面倒な問題に、生成されたCコードにより対処します。この場合、バックスラッシュ(\)は、前にもう1つバックスラッシュを置くことでエスケープされます。
注意:
この機能は、一般的に、古いCコンパイラを使用してシフトJIS環境で開発をするときに必要になります。
シングルバイト・キャラクタ・セットにNLS_LANGが設定されていると、このオプションは効果がありません。
用途
使用するコンパイラでマルチバイト・キャラクタ・セットがサポートされているかどうかを、Pro*C/C++プリコンパイラに指定します。これは、マルチバイトのクライアント環境(たとえば、NLS_LANGがマルチバイト・キャラクタ・セットに設定されているとき)で作業する開発者向けです。
構文
COMP_CHARSET={MULTI_BYTE | SINGLE_BYTE}
デフォルト
MULTI_BYTE
使用上の注意
コマンドラインでのみ入力できます。
COMP_CHARSET=MULTI_BYTE(デフォルト)が指定されると、Pro*C/C++では、マルチバイト・キャラクタ・セットをサポートしているコンパイラによりコンパイルされるCコードを生成します。
COMP_CHARSET=SINGLE_BYTEを指定すると、Pro*C/C++では、シングルバイト系のコンパイラ用のCコードが生成され、マルチバイト文字列中のダブルバイト文字の2バイト目がバックスラッシュ(\)に対応するASCII文字である場合に起きる可能性のある面倒な問題に、生成されたCコードにより対処します。この場合、バックスラッシュ(\)は、前にもう1つバックスラッシュを置くことでエスケープされます。
注意:
この機能は、一般的に、古いCコンパイラを使用してシフトJIS環境で開発をするときに必要になります。
シングルバイト・キャラクタ・セットにNLS_LANGが設定されていると、このオプションは効果がありません。
用途
ユーザー構成ファイルの名前を指定します。
構文
CONFIG=
filename
デフォルト
None
使用上の注意
コマンドラインでのみ入力できます。
Oracleプリコンパイラでは、コマンドライン・オプションがあらかじめ設定されている構成ファイルを使用できます。デフォルトでは、システム構成ファイルと呼ばれるテキスト・ファイルが使用されます。ただし、ユーザー構成ファイルと呼ばれるいくつかの代替ファイルを指定できます。
構成ファイルはネストできません。したがて、構成ファイルではCONFIG
オプションを指定できません。
用途
このオプションに基づき、プリコンパイラでは、SQLLIBに接続プール機能を有効または無効にするように指示する適切なコードを生成します。
構文
CPOOL = {YES|NO}
デフォルト
NO
使用上の注意
このオプションがNOに設定されている場合、プリコンパイラではその他の接続プーリング・オプションを無視します。
用途
CPP_SUFFIXオプションを使用すると、CODE=CPPオプションを指定した場合に生成されるC++出力ファイルに、プリコンパイラによって付けられるファイル拡張子を指定できます。
構文
CPP_SUFFIX=filename_extension
デフォルト
システム固有。
使用上の注意
ほとんどのCコンパイラでは、入力ファイルのデフォルト拡張子は.cになります。しかし、C++コンパイラでは、ファイル名の拡張子がコンパイラごとに異なる場合があります。CPP_SUFFIXオプションを指定すると、プリコンパイラで生成されるファイル名拡張子を指定できます。このオプションの値は、引用符もピリオドも付けない文字列です。たとえば、CPP_SUFFIX=ccまたはCPP_SUFFIX=Cのように指定します。
用途
指定した時間(秒単位)より長い間アイドル状態になっている物理接続を終了し、オープンされている物理接続を最適な数に保ちます。
構文
CTIMEOUT = 範囲は1から65535。
デフォルト
未設定を意味する0。
使用上の注意
接続プールが終了されるまで、物理接続はクローズされません。新しい物理接続を作成すると、サーバーへのラウンド・トリップが必要になります。
用途
OracleがOracle9i、Oracle8i、Oracle8、Oracle7、あるいはOracleのネイティブ・バージョン(つまり、アプリケーションが接続しているバージョン)のうち、どの意味上および構文上の規則に従うかを指定します。
構文
DBMS=NATIVE|V7|V8
デフォルト
NATIVE
使用上の注意
インラインでは入力できません。
DBMSオプションを使用すると、Oracleのバージョン固有の動作を制御できます。DBMS=NATIVE (デフォルト)の場合、Oracleは、Oracleのネイティブ・バージョンの意味および構文上の規則に従います。
DBMS=V8またはDBMS=V7のときは、OracleはそれぞれOracle9iの規則(Oracle7、Oracle8およびOracle8iの場合と同じ規則)に従います。
表6-4は、互換性のあるDBMS
とMODE
の設定がどのように相互に作用するかを示しています。その他の組合せはすべて互換性がなく、推奨できません。
表6-4 互換性のあるDBMSおよびMODE設定
状況 | DBMS=V7/V8 MODE=ANSI | DBMS=V7/V8 MODE=ORACLE |
---|---|---|
「データが見つかりません」という警告コード |
+100 |
+1403 |
インジケータ変数を使用しないNULLのフェッチ |
エラー-1405 |
エラー-1405 |
インジケータ変数を使用しない切捨て値のフェッチ |
エラーなしでSQLWARN(2)設定 |
エラーなしでSQLWARN(2)設定 |
COMMITまたはROLLBACKによるカーソルのクローズ |
すべて明示的 |
CURRENT OFのみ |
すでにオープンしているカーソルのオープン |
エラー-2117 |
エラーなし |
すでにクローズしているカーソルのクローズ |
エラー-2114 |
エラーなし |
SQLグループ関数によるNULLの無視 |
警告なし |
警告なし |
複数行の問合せでSQLグループ関数をコールするとき |
FETCH時 |
FETCH時 |
SQLCA構造体の宣言 |
オプション |
必須 |
SQLCODEまたはSQLSTATE状態変数の宣言 |
必須 |
指定できるがOracleでは無視 |
TYPE文およびVAR文でCHARに使用される文字ホスト変数のデフォルト外部データ型 |
CHARF |
VARCHAR2 |
SQL文における文字列リテラルのデフォルトの外部データ型 |
CHARF |
CHARF |
SQL文におけるCHAR変数のデフォルトの内部データ型 |
CHAR |
CHAR |
PL/SQLブロックにおけるCHAR変数のデフォルトの外部データ型 |
CHARF |
CHARF |
USERファンクションから戻される値のデフォルトの外部データ型 |
CHARF |
CHARF |
DESCRIBEコードから戻される外部データ型(動的SQL方法4) |
96 |
96 |
整合性制約 |
有効 |
有効 |
ロールバック・セグメント用のPCTINCREASE |
使用不可 |
使用不可 |
MAXEXTENTS記憶域パラメータ |
使用不可 |
使用不可 |
用途
Pro*C/C++プリコンパイラによりSQLCODEの#defineが生成されるかどうかを制御します。
構文
DEF_SQLCODE={NO | YES}
デフォルト
NO
使用上の注意
コマンドラインまたは構成ファイルからのみ入力できます。
DEF_SQLCODE=YESの場合、プリコンパイラでは生成されるソース・コードでSQLCODEが次のように定義されます。
#define SQLCODE sqlca.sqlcode
この定義があれば、SQLCODEを使用して実行SQL文の結果をチェックできます。DEF_SQLCODEオプションは、SQLCODEの使用が必要な規格への準拠のために指定します。
また、次のいずれかを入力して、ソース・コードにSQLCAも組み込む必要があります。
#include <sqlca.h>
または
EXEC SQL INCLUDE SQLCA;
SQLCAを組み込まなければ、このオプションを使用するとプリコンパイル時にエラーが発生します。
用途
後続のEXEC SQL OBJECT CREATE文とEXEC SQL OBJECT DEREF文に使用される確保継続時間を設定します。キャッシュ内のオブジェクトは、保持期間の終わりに暗黙的に解放されます。
構文
DURATION={TRANSACTION | SESSION}
デフォルト
TRANSACTION
使用上の注意
EXEC ORACLE OPTION文を使用してインライン入力できます。
TRANSACTIONは、オブジェクトがトランザクションの完了時に暗黙的に解放されることを意味します。
SESSIONは、オブジェクトが接続の終了時に暗黙的に解放されることを意味します。
用途
このマイクロ・オプションでは、動的SQL方法4の記述子の動作を指定します。MODEの設定によりDYNAMICの設定が決まります。
構文
DYNAMIC={ORACLE | ANSI}
デフォルト
ORACLE
使用上の注意
EXEC ORACLE OPTION文を使用してインラインで入力することはできません。
用途
型ファイルの処理中に生成されたエラーを書き込む出力ファイルを指定します。省略すると、エラーは画面に出力されます。
構文
ERRTYPE=filename
デフォルト
なし
使用上の注意
生成されるエラー・ファイルは1つのみです。複数の値を入力すると、最後の値がプリコンパイラで使用されます。
用途
アプリケーションが通知の登録および受信に対応しているかどうかを指定します。
構文
EVENTS={YES | NO}
デフォルト
NO
使用上の注意
コマンドラインからのみ入力できます。
用途
構文
FIPS={YES|NO}
デフォルト
NO
使用上の注意
FIPS=YES
の場合、ANSI/ISOに埋め込まれたSQL規格(SQL92)のOracle拡張機能を使用したり、SQL92の機能を非準拠の方法で使用したりすると、FIPS
フラガーは警告(エラーではない)メッセージを発行します。
次のANSI/ISO SQL拡張機能には、プリコンパイル時にフラグが立てられます。
FOR句を含む配列インタフェース
SQLCA、ORACAおよびSQLDAデータ構造体
DESCRIBE
文を含む動的SQL
埋込みPL/SQLブロック
自動データ型変換
DATE、COMP-3(Pro*COBOLのみ)、NUMBER
、RAW
、LONG
RAW
、VARRAW
、ROWID
およびVARCHAR
データ型
ランタイム・オプションを指定するためのORACLE OPTION文
ユーザー・イグジットでのEXEC IAF文およびEXEC TOOLS文
CONNECT
文
TYPE
およびVARデータ型の同値化文
AT db_name句
DECLARE
...DATABASE
文、...STATEMENT
文および...TABLE
文
WHENEVER
文でのSQLWARNING条件
WHENEVER
文でのDO
およびSTOP
アクション
COMMIT
文でのCOMMENT
句およびFORCE
TRANSACTION
句
ROLLBACK
文でのFORCE
TRANSACTION
句およびTO
SAVEPOINT
句
COMMIT
文およびROLLBACK
文でのRELEASE
パラメータ
INTO
句のWHENEVER
...DOラベルおよびホスト変数の前に付けるオプションのコロン
用途
Pro*COBOLの場合のみ、Globalization Support_LOCALオプションにより、グローバリゼーション・サポートの文字変換が、プリコンパイラのランタイム・ライブラリまたはOracleサーバーにより実行されます。
構文
Globalization Support_LOCAL={YES|NO}
デフォルト
NO
使用上の注意
インラインでは入力できません。
Globalization Support_LOCAL=YES
の場合、ランタイム・ライブラリ(SQLLIB)により、マルチバイトのグローバリゼーション・サポート・データ型を持つホスト変数に対する空白の埋込みおよび削除がローカルに実行されます。
Globalization Support_LOCAL=NO
の場合、マルチバイトのグローバリゼーション・サポート・データ型を持つホスト変数に対する空白の埋込みおよび削除の処理は、ローカルに実行されません。
Oracleでは、グローバリゼーション・サポート変数の空白の埋込みまたは削除は実行されません。Globalization Support_LOCAL=NOの場合、マルチバイトのグローバリゼーション・サポート・データを使用するSQL文を実行すると、Oracleサーバーからはエラーが戻されます。
用途
プリコンパイル済ヘッダー・ファイルを許可します。プリコンパイル済ヘッダー・ファイルのファイル拡張子を指定します。
構文
HEADER=extension
デフォルト
NONE
使用上の注意
ヘッダー・ファイルをプリコンパイルする場合、このオプションは必須で、ヘッダー・ファイルのプリコンパイルによって生成される出力ファイルのファイル拡張子の指定に使用されます。
通常のPro*C/C++プログラムをプリコンパイルする場合、このオプションは任意です。指定すると、Pro*C/C++プログラムのプリコンパイル時に、プリコンパイル済ヘッダーのメカニズムを使用できます。
どちらの場合も、このオプションで#includeディレクティブの処理時に使用するファイル拡張子も指定できます。指定した拡張子の付いた#includeファイルが存在する場合、Pro*C/C++ではそのファイルをPro*C/C++によって以前に生成されたプリコンパイル済ヘッダー・ファイルとみなします。Pro*C/C++は、#includeディレクティブを処理してインクルードされるヘッダー・ファイルをプリコンパイルするかわりに、そのファイルからデータをインスタンス化します。
このオプションは、コマンドラインまたは構成ファイルでのみ使用できます。インラインでは使用できません。このオプションを使用する場合は、ファイル拡張子のみを指定します。ファイル・セパレータは含めないでください。たとえば、拡張子にピリオド(.)は含めないでください。
用途
カーソル・キャッシュでのSQL文およびPL/SQLブロック用カーソルの処理方法を指定します。
構文
HOLD_CURSOR={YES|NO}
デフォルト
NO
使用上の注意
HOLD_CURSOR
を使用すると、プログラムのパフォーマンスを改善できます。詳細は、パフォーマンス・チューニングを参照してください。
SQLデータ操作文を実行すると、その文に関連付けられたカーソルが、カーソル・キャッシュ内のエントリにリンクされます。そのカーソル・キャッシュ・エントリは、文の処理に必要な情報が格納されるOracleプライベートSQL領域にリンクされます。HOLD_CURSOR
は、カーソルとカーソル・キャッシュの間のリンクで発生する処理を制御します。
HOLD_CURSOR=NO
の場合、OracleでSQL文が実行され、カーソルがクローズされた後に、プリコンパイラではそのリンクに再利用可能のマークを付けます。このリンクは、それが示すカーソル・キャッシュ・エントリが別のSQL文に必要になると、すぐに再利用されます。これにより、プライベートSQL領域に割り当てられたメモリーが解放され、解析ロックが解除されます。
HOLD_CURSOR=YES
で、RELEASE_CURSOR=NO
の場合、リンクは維持されます。プリコンパイラはそれを再利用しません。この設定によって後に続く処理の実行速度が向上するため、これは実行頻度の高いSQL文には便利です。文の再解析やOracleプライベートSQL領域用のメモリー割当ては不要です。
暗黙カーソルとともにインラインで使用する場合、SQL文の実行前にHOLD_CURSOR
を設定してください。明示カーソルとともにインラインで使用する場合は、カーソルをオープンする前にHOLD_CURSOR
を設定してください。
RELEASE_CURSOR=YES
を指定するとHOLD_CURSOR=YES
がオーバーライドされ、HOLD_CURSOR
=NO
を指定するとRELEASE_CURSOR=NO
がオーバーライドされます。これら2つのオプションの相互作用の詳細は、表C-1を参照してください。
用途
新しいバッチ挿入の開始前に、暗黙的セーブポイントを設定するかどうかを制御します。
構文
implicit_svpt={YES|NO}
デフォルト
NO
使用上の注意
implict_svpt=yesの場合、新しい行のバッチを開始する前に、セーブポイントが設定されます。挿入時にエラーが発生すると、暗黙的な「セーブポイントへのロールバック」が実行されます。このオプションはDB/2との互換性のためのもので、余分なラウンドトリップが必要なことから、明らかにマイナスです。
implict_svpt=noの場合、暗黙的セーブポイントは設定されません。バッファ済INSERTでエラーが発生すると、アプリケーションに通知されますが、ロールバックは実行されません。
用途
構文
INAME=
filename
デフォルト
None
使用上の注意
インラインでは入力できません。
コマンドラインで入力ファイルの名前を指定する場合、キーワードのINAMEは省略可能です。たとえば、Pro*COBOLでは、INAME=myprog.pco
のかわりに、myprog.pcoと指定できます。
プリコンパイラでは、標準の入力ファイル拡張子(表6-5を参照)とみなされます。したがって、拡張子が非標準の場合を除き、INAMEの指定にファイル拡張子を使用する必要はありません。たとえば、Pro*FORTRANでは、myprog.pfoのかわりに、myprogと指定できます。
表6-5 入力ファイルの拡張子
ホスト言語 | 標準のファイル拡張子 |
---|---|
COBOL |
|
FORTRAN |
|
Pro*COBOLの場合のみ、INAME
を指定する際に非標準の入力ファイル拡張子を使用すると、HOSTも指定する必要があります。
用途
構文
INCLUDE=path
デフォルト
現在のディレクトリ
使用上の注意
通常、INCLUDE
は、SQLCAファイルおよびORACAファイルのディレクトリ・パスの指定に使用します。プリコンパイラでは、最初に現在のディレクトリを検索し、次にINCLUDE
で指定したディレクトリを検索して、最後に標準のINCLUDE
ファイル用のディレクトリを検索します。このため、SQLCAやORACAなどの標準ファイルのディレクトリ・パスを指定する必要はありません。
標準以外のファイルについては、現在のディレクトリに格納されている場合を除いて、INCLUDE
を使用してディレクトリ・パスを指定する必要があります。次に示すように、コマンドラインに複数のパスを指定できます。
... INCLUDE=<path1> INCLUDE=<path2> ...
プリコンパイラでは、最初に現在のディレクトリを検索し、次にpath1で指定したディレクトリを検索し、続いてpath2で指定したディレクトリを検索して、最後に標準のINCLUDE
ファイル用のディレクトリを検索します。
ディレクトリ・パスを指定しても、プリコンパイラでは最初に現在のディレクトリでファイルを検索します。このため、INCLUDE
するファイルが別のディレクトリにある場合は、同じ名前のファイルが現在のディレクトリに存在しないことを確認してください。
ディレクトリ・パスを指定するための構文はシステムによって異なります。使用しているオペレーティング・システムの規則に従って指定してください。
用途
OTTで生成された型のファイルを1つ以上指定します(アプリケーションでオブジェクト型が使用される場合にのみ必要です)。
構文
INTYPE=(file_1,file_2,...,file_n)
デフォルト
なし
使用上の注意
Pro*C/C++コードには、オブジェクト型ごとに1つの型のファイルが存在します。
用途
Pro*C/C++プリコンパイラでその出力ファイルに#lineプリプロセッサ・ディレクティブが追加されるかどうかを指定します。
構文
LINES={YES | NO}
デフォルト
NO
使用上の注意
コマンドラインでのみ入力できます。
LINESオプションはデバッグに便利です。
LINES=YESの場合、Pro*C/C++プリコンパイラではその出力ファイルに#lineプリプロセッサ・ディレクティブを追加します。
通常、Cコンパイラでは、それぞれの入力行が処理されるたびに行カウントを増やします。#lineディレクティブは、コンパイラの入力行カウントを強制的にリセットして、プリコンパイラで生成されたコードの行を数えないようにします。さらに、入力ファイルの名前が変わったときに、次の#lineディレクティブが新しいファイル名を指定します。
Cコンパイラでは、行番号とファイル名を使用して、エラーの発生場所を示します。したがって、Cコンパイラで発行されるエラー・メッセージは、変更済(プリコンパイル済)のソース・ファイルではなく、常に元のソース・ファイルを参照します。これにより、ほとんどのデバッガを使用して、元のソース・コードを1ステップずつ実行することもできます。
LINES=NO(デフォルト)の場合、プリコンパイラでは出力ファイルに#lineディレクティブは追加されません。
注意:
Pro*C/C++プリコンパイラでは、#lineディレクティブはサポートされません。つまり、プリコンパイラ・ソースでは、#lineディレクティブを直接コーディングできません。ただし、LINES=オプションを使用すると、プリコンパイラに#lineディレクティブを挿入させることができます。
用途
構文
LITDELIM={APOST|QUOTE}
デフォルト
QUOTE
使用上の注意
LITDELIM=APOST
の場合、プリコンパイラではCOBOLコードを生成するときにアポストロフィ(')が使用されます。LITDELIM=QUOTE
を指定すると、次のように二重引用符(")が使用されます。
CALL "SQLROL" USING SQL-TMP0.
SQL文では、次の例に示すように、特殊文字または小文字を含む識別子は二重引用符で区切る必要があります。
EXEC SQL CREATE TABLE "Emp2" END-EXEC.
また、文字列定数を区切る場合は、次の例のように引用符を使用します。
EXEC SQL SELECT ENAME FROM EMP WHERE JOB = 'CLERK' END-EXEC.
Pro*COBOLソース・ファイルで使用されているデリミタに関係なく、プリコンパイラではLITDELIM値で指定したデリミタを生成します。
用途
リスト・ファイルのデフォルト以外の名前を指定します。
構文
LNAME=filename
デフォルト
input.LIS(inputは入力ファイルの基底名)
使用上の注意
インラインでは入力できません。
デフォルトでは、リスト・ファイルはカレント・ディレクトリに作成されます。
用途
コンパイラの制限を超えないように、プリコンパイラで生成される文字列リテラルの最大長を指定します。たとえば、コンパイラで132文字より長い文字列リテラルを処理できない場合は、コマンドラインにMAXLITERAL=132と指定します。
構文
MAXLITERAL=
integer
デフォルト
デフォルト値は、次に示すように、プリコンパイラにより異なります。
プリコンパイラ | デフォルト |
---|---|
Pro*COBOL |
256 |
Pro*FORTRAN |
1000 |
使用上の注意
MAXLITERAL
の最大値は、コンパイラによって異なります。デフォルト値は言語によって異なりますが、このデフォルト値より小さい値を指定する必要がある場合があります。たとえば、一部のCOBOLコンパイラでは、132文字より長い文字列リテラルを処理できないため、その場合はMAXLITERAL=132
と指定します。
MAXLITERAL
で指定した長さを超える文字列は、プリコンパイル中に分割され、実行時に再び結合(連結)されます。
インラインでMAXLITERAL
を入力することはできますが、プログラムで値を設定できるのは1回のみで、EXEC ORACLE文を最初のEXEC SQL文の前に指定する必要があります。指定しない場合、プリコンパイラは警告メッセージを発行し、余分または誤って指定したEXEC ORACLE文を無視して、処理を続行します。
用途
同時にオープンされ、プリコンパイラによりキャッシュに保存されたままになるカーソルの数を指定します。
構文
MAXOPENCURSORS=
integer
デフォルト
10
使用上の注意
MAXOPENCURSORSを使用すると、プログラムのパフォーマンスを改善できます。詳細は、パフォーマンス・チューニングを参照してください。
個別にプリコンパイルする場合は、「分割プリコンパイル」の説明のように、MAXOPENCURSORSを指定してください。
MAXOPENCURSORSオプションには、SQLLIBカーソル・キャッシュの初期サイズを指定します。新しいカーソルが必要で、空いているキャッシュ・エントリがない場合、Oracleではエントリの再利用が試みられます。それが成功するどうかは、HOLD_CURSOR値およびRELEASE_CURSOR値によって決まり、明示カーソルの場合は、カーソル自体の状態によって決まります。再利用できるキャッシュ・エントリが見つからない場合、Oracleは追加のキャッシュ・エントリを割り当てます。Oracleは、空きメモリーがなくなるかOPEN_CURSORSで設定された限界に達するまで、必要に応じてキャッシュ・エントリの割当てを続行します。「最大オープン・カーソル数を超えました」というOracleエラーを避けるには、MAXOPENCURSORSにOPEN_CURSORSより6以上小さい値を指定してください。
プログラムが同時に必要とするオープン・カーソルの数が増えて、MAXOPENCURSORSを再指定する必要がある場合もあります。45から50の値を指定することは珍しくありませんが、ユーザー・プロセスのメモリー領域にカーソル1つにつき、1つのプライベートSQL領域が必要なことに注意してください。デフォルト値の10は、大半のプログラムには適切な値です。
用途
INSERT文の実行前にバッファする必要がある行の数を制御します。
構文
max_row_insert={バッファに格納される行数}
デフォルト
0
使用上の注意
0よりも大きい任意の値を指定すると、バッファ済INSERT機能が有効化され、INSERT文の実行前に多くの行がバッファされます。
用途
構文
MODE={ANSI|ISO|ANSI14|ISO14|ANSI13|ISO13|ORACLE}
デフォルト
ORACLE
使用上の注意
インラインでは入力できません。
MODE
値のANSIとISO、ANSI14とISO14、ANSI13とISO13は、それぞれ等価です。
MODE=ORACLE
(デフォルト)の場合、埋込みSQLプログラムはOracleの動作規則に従います。
MODE={ANSI14|ANSI13}
の場合、プログラムは現行のANSI SQL規格にほぼ準拠します。
MODE=ANSI
の場合、プログラムは完全にANSI規格に準拠し、次のような変更が有効になります。
CHAR列値、USER
擬似列値、文字ホスト変数および引用符付きリテラルは、ANSI固定長文字列と同じように扱われます。そして、そのような値について割当て、比較、INSERT
、UPDATE
、SELECT
またはFETCH
を実行するときに、ANSI準拠の空白埋込みが使用されます。
COMMIT
またはROLLBACK
を発行すると、すべての明示カーソルがクローズされます。(MODE={ANSI13|ORACLE}
の場合は、コミットまたはロールバックにより、CURRENT OF
句で参照されるカーソルのみがクローズされます。)
すでにオープンされているカーソルのOPENや、すでにクローズされているカーソルのCLOSE
はできません。(MODE=ORACLE
の場合は、再解析を避けるために、オープン状態のカーソルを再度OPENできます。)
SQLCODEに戻される「データが見つかりません」というOracle警告コードは、+1403から+100になります。エラー・メッセージのテキストは変わりません。
Oracleが切り捨てられた列値を出力ホスト変数に割り当てた場合、エラー・メッセージは発行されません。
MODE={ANSI|ANSI14}
の場合、SQLCODE(FORTRANのSQLCOD)という4バイトの整数変数、またはSQLSTATE(FORTRANのSQLSTA)という5バイトの文字変数を宣言する必要があります。詳細は、エラー処理の代替手段を参照してください。
表6-4では、MODE設定とDBMS設定の相互作用を示しています。その他の組合せは互換性がないか、お薦めできません。
用途
Pro*FORTRANの場合のみ、MULTISUBPROGオプションは、Pro*FORTRANプリコンパイラでCOMMON
文およびBLOCK DATA
サブプログラムを生成するかどうかを指定します。
注意:
このオプションを使用すると、Pro*FORTRANリリース1.3アプリケーションをその後のリリースに移行できます。Pro*FORTRANリリース1.3ソース・コードを移行しない場合は、MUTISUBPROGオプションを無視してもかまいません。
構文
MULTISUBPROG={YES|NO}
デフォルト
YES
使用上の注意
インラインでは入力できません。
MULTISUBPROG=YES
の場合、プリコンパイラではCOMMON
文およびBLOCK DATA
サブプログラムが生成されます。ホスト・プログラムはCOMMON
ブロックに直接アクセスしませんが、同じプリコンパイル・ユニット内の複数のプログラム・ユニットにSQL文を含めることができます。
ただし、プリコンパイラでは、異なる出力ファイルで定義されているCOMMON
ブロックに、同じ名前を付けることができます。それらのファイルを実行可能プログラムにリンクさせると、リンク時または実行時にエラーが発生します。この問題を解決するには、入力ファイルの名前を変更するか、COMMON_NAME
オプションを指定してデフォルトのCOMMONブロック名をオーバーライドします。問題を避けるには、MULTISUBPROG=NO
を指定してください。
Pro*FORTRANソース・コードの各ソース・ファイルにサブプログラムが1つしかない場合(これはリリース1.3での制限でした)は、MULTISUBPROG=NO
を指定します。MULTISUBPROG=NO
の場合、COMMON_BLOCK
オプションは無視され、プリコンパイラではCOMMON
文またはBLOCK DATA
サブプログラムは生成されません。実行可能な複数のSQL文を含むプログラム・ユニットにはすべて、宣言部が必要です。それがないと、プリコンパイル・エラーが発生します。複数の埋込みSQLプログラム・ユニットが含まれる入力ファイルの場合、プリコンパイラではそれぞれのユニットで同じ宣言が生成されます。
用途
ネイティブfloat/doubleをサポートします。
構文
NATIVE_TYPES = {YES|NO}
デフォルト
NO
使用上の注意
ネイティブfloatおよびネイティブdoubleデータ型は、単精度と倍精度の浮動小数点値を表します。これらはネイティブ、つまりホスト・システムの浮動小数点形式で表されます。
用途
プリコンパイラでマルチバイト文字変数として扱われるCホスト文字変数を指定します。
構文
NLS_CHAR=varnameまたはNLS_CHAR=(var_1,var_2,...,var_n)
デフォルト
なし。
使用上の注意
コマンドラインまたは構成ファイルでのみ入力できます。
このオプションを使用すると、プリコンパイラでマルチバイト文字変数として扱う必要のある1つ以上のホスト変数のリストを、プリコンパイル時に指定できます。このオプションでは、C言語のchar変数またはPro*C/C++のVARCHAR変数のみを指定できます。
オプション・リストにプログラムで宣言していない変数を指定しても、プリコンパイラのエラーは発生しません。
用途
プリコンパイラのSQLLIBランタイム・ライブラリとデータベース・サーバーのうち、どちらでマルチバイト・キャラクタ・セット変換が実行されるかを指定します。
構文
NLS_LOCAL={YES | NO}
デフォルト
NO
使用上の注意
YESに設定すると、Pro*C/C++およびSQLLIBライブラリによって、ローカル・マルチバイト・サポートが提供されます。どのCホスト変数がマルチバイトかを指定するには、NLS_CHARオプションを使用する必要があります。
NOに設定すると、Pro*C/C++では、データベース・サーバーのマルチバイト・オブジェクトのサポートを使用します。新規アプリケーションにはすべて、NLS_LOCALをNOに設定してください。
環境変数NLS_NCHARには、有効な固定幅の各国語キャラクタ・セットを設定する必要があります。可変長幅の各国語キャラクタ・セットはサポートされていません。
コマンドラインまたは構成ファイルでのみ入力できます。
用途
出力ファイル名を指定します。
構文
ONAME=
filename
デフォルト
システム依存
使用上の注意
インラインでは入力できません。
このオプションは、出力ファイルの名前が入力ファイルの名前と異なる場合に、出力ファイルの名前を指定するために使用します。たとえば、次のコマンドを発行したとします。
procob INAME=my_test
デフォルトの出力ファイル名はmy_test.cobです。出力ファイル名をmy_test_1.cobにする場合は、次のコマンドを発行します。
procob INAME=my_test ONAME=my_test_1.cob
ONAMEを使用して指定するファイルには、.cob拡張子を付けてください。ONAMEオプションにはデフォルトの拡張子はありません。
出力ファイル名にはデフォルトの名前を使用するのではなく、ONAMEで明示的に名前を指定することをお薦めします。
用途
プログラムでOracle通信領域(ORACA)を使用できるかどうかを指定します。
構文
ORACA={YES|NO}
デフォルト
NO
使用上の注意
ORACA=YES
の場合、プログラムにINCLUDE
ORACA文を記述する必要があります。
用途
出力ファイルのレコード長を指定します。
構文
ORECLEN=
integer
デフォルト
80
使用上の注意
インラインでは入力できません。
ORECLENに指定する値は、IRECLENの値と同じか、それより大きい値にする必要があります。指定可能な最大値はシステムによって異なります。
用途
SQL文用にアウトラインSQLファイルを生成する必要があることを指定します。
構文
outline={yes | no | category_name}
デフォルト
no
使用上の注意
値がyes
の場合、アウトラインSQLファイルはDEFAULTカテゴリに含まれている必要があります。生成されるアウトライン書式は次のとおりです。
DEFAULT_<filename>_<filetype>_<sequence_no>
カテゴリ名が示されている場合は、そのカテゴリにSQLファイルを生成する必要があります。この場合、生成されるアウトライン書式は次のようになります。
<category_name>_<filename>_<filetype>_<sequence_no>
値がno
の場合、アウトラインSQLファイルは生成されません。
このオプションを有効にする場合は、意味検査をフルにする必要があり、つまりオプションsqlcheck=full/semanticsを意味します。sqlcheck=syntax/limited/noneの場合は、エラーが生成されます。
用途
アウトライン名の生成を制御します。
構文
outlnprefix={none | prefix_name}
デフォルト
no
使用上の注意
outlnprefix=prefix_nameの場合、アウトライン書式は次のとおりです。
<category_name>_<filename>_<filetype>
この書式は、アウトライン名の<prefix_name>
に置き換えられます。
アウトライン名が30バイトを超える場合、このオプションは接頭辞名を指定する際に有効です。
outlnprefix=noneの場合、アウトライン名はシステムによって生成されます。次の書式で生成されます。
<category_name>_<filename>_<filetype>_<sequence_no>
このオプションを有効にする場合は、意味検査をフルにする必要があり、つまりオプションsqlcheck=full/semanticsを意味します。sqlcheck=syntax/limited/noneまたはoutline=false(あるいはその両方)の場合、エラーが生成されます。
用途
リスト・ファイルの1物理ページ当たりの行数を指定します。
構文
PAGELEN=
integer
デフォルト
66
使用上の注意
インラインでは入力できません。
指定可能な最大値はシステムによって異なります。
用途
Pro*C/C++プリコンパイラでソース・ファイルを解析する方法を指定します。
構文
PARSE={FULL | PARTIAL | NONE}
デフォルト
FULL
使用上の注意
C++互換コードを生成するには、PARSEオプションにNONEまたはPARTIALのいずれかを指定する必要があります。
PARSE=NONEまたはPARSE=PARTIALの場合、すべてのホスト変数は宣言部内で宣言する必要があります。
変数SQLCODEを宣言部の内側で宣言しない場合、エラー検出の信頼性がなくなります。使用しているプラットフォームのPARSEのデフォルト値をチェックしてください。
PARSE=FULLの場合、Cパーサーが動作し、コード内のクラスなどのC++構造体は認識されません。
PARSE=FULLまたはPARSE=PARTIALを指定すると、Pro*C/C++は#define、#ifdefなどのCプリプロセッサ・ディレクティブを完全にサポートします。ただし、PARSE=NONEを指定すると、EXEC ORACLE文により条件付きプリプロセッシングがサポートされます。
注意:
一部のプラットフォームでは、PARSEのデフォルト値がFULL以外の値です。使用するシステム固有のマニュアルを参照してください。
用途
数行を事前にフェッチすることで、問合せの実行速度を向上させます。
構文
PREFETCH=integer
デフォルト
1
使用上の注意
構成ファイルまたはコマンドラインで入力できます。優先順位の規則に従い、明示カーソルを使用するすべての問合せの実行に、整数の値が使用されます。
インラインで使用する場合、明示カーソルのあるOPEN文の前に置く必要があります。次に、OPENが実行されるときに事前にフェッチされる行数は、有効な最後のインラインPREFETCHオプションによって決まります。
指定可能な値の範囲は0から65535です。
用途
カーソル・キャッシュでのSQL文およびPL/SQLブロック用カーソルの処理方法を指定します。
構文
RELEASE_CURSOR={YES|NO}
デフォルト
NO
使用上の注意
RELEASE_CURSOR
を使用すると、プログラムのパフォーマンスを改善できます。詳細は、パフォーマンス・チューニングを参照してください。
SQLデータ操作文を実行すると、その文に関連付けられたカーソルが、カーソル・キャッシュ内のエントリにリンクされます。そのカーソル・キャッシュ・エントリは、文の処理に必要な情報が格納されるOracleプライベートSQL領域にリンクされます。RELEASE_CURSOR
は、カーソル・キャッシュとプライベートSQL領域の間のリンクで発生する処理を制御します。
RELEASE_CURSOR=YES
の場合、OracleでSQL文が実行され、カーソルがクローズされると、プリコンパイラはただちにこのリンクを削除します。これにより、プライベートSQL領域に割り当てられたメモリーが解放され、解析ロックが解除されます。カーソルのCLOSE時に、関連付けられたリソースが確実に解放されるようにするには、RELEASE_CURSOR=YES
を指定する必要があります。
RELEASE_CURSOR=NO
およびHOLD_CURSOR=YES
の場合、リンクは保持されます。オープン・カーソルの数がMAXOPENCURSORSの設定値を超えないかぎり、プリコンパイラではリンクは再利用されません。この設定によって後に続く処理の実行速度が向上するため、これは実行頻度の高いSQL文には便利です。文の再解析やOracleプライベートSQL領域用のメモリー割当ては不要です。
暗黙カーソルとともにインラインで使用する場合、SQL文の実行前にRELEASE_CURSOR
を設定してください。明示カーソルとともにインラインで使用する場合は、カーソルをオープンする前にRELEASE_CURSOR
を設定してください。
RELEASE_CURSOR=YES
を指定するとHOLD_CURSOR=YES
がオーバーライドされ、HOLD_CURSOR=NO
を指定するとRELEASE_CURSOR=NO
がオーバーライドされます。これら2つのオプションの相互作用の詳細は、表C-1を参照してください
用途
プリコンパイラを使用して、または後で開発者が手動で「CREATE OUTLINE」文を実行するオプションを提供します。
構文
runoutline={yes | no}
デフォルト
no
使用上の注意
runoutline=yesの場合は、プリコンパイルが正常に完了した後で、プリコンパイラ/トランスレータによって、生成された「CREATE OUTLINE」文が実行されます。
RUNOUTLINEを使用する場合は、アウトライン・オプションをtrueまたはcategory_nameに設定する必要があります。このオプションを有効にする場合は、意味検査をフルにする必要があり、つまりオプションsqlcheck=full/semanticsを意味します。sqlcheck=syntax/limited/noneの場合は、エラーが生成されます。
用途
1行のSELECT
文が複数行を戻すとき、あるいはホスト配列の許容範囲を超える行数を戻すときに、プログラムでエラーが発生するかどうかを指定します。
構文
SELECT_ERROR={YES|NO}
デフォルト
YES
使用上の注意
SELECT_ERROR=YESの場合、1行のSELECT文で戻される行数が多すぎたり、配列のSELECT文でホスト配列に入りきらない行数が戻されたりすると、エラーが発生します。
SELECT_ERROR=NOの場合、1行のSELECT文で戻される行数が多すぎても、配列のSELECT文でホスト配列に入りきらない行数が戻されても、エラーは発生しません。
YESを指定してもNOを指定しても、行は表から無作為に選択されます。選択する行の順序を特定するには、SELECT
文にORDER BY句を指定します。SELECT_ERROR=NO
のときORDER BY
句を指定すると、配列からの選択時にOracleは先頭行または先頭のn行を戻します。SELECT_ERROR=YES
を指定すると、ORDER BY
句の有無を問わず、戻る行数が多すぎる場合にエラーが生成されます。
用途
構文およびセマンティック・チェックの種類と範囲を指定します。
構文
SQLCHECK={SEMANTICS|FULL|SYNTAX|LIMITED|NONE}
デフォルト
SYNTAX
使用上の注意
SEMANTICS
値とFULL
値は等価です。同様に、SYNTAX
値とLIMITED
値も等価です。
Oracleプリコンパイラは、埋込みSQL文とPL/SQLブロックの構文およびセマンティックをチェックすることで、プログラムのデバッグに役立ちます。検出されたエラーはプリコンパイル時にレポートされます。
チェックのレベルは、インラインまたはコマンドラインでSQLCHECKオプションを入力することで制御します。ただし、インラインで指定するチェックのレベルを、コマンドラインで指定する(またはデフォルトによって受け入れる)レベルよりも高くすることはできません。たとえば、コマンドラインでSQLCHECK=NONE
を指定すると、インラインでSQLCHECK=SYNTAX
を指定することはできません。
SQLCHECK=SYNTAX|SEMANTICS
の場合、PL/SQLの予約語がSQL文で使用されると、そのSQL文がPL/SQLでなくても、プリコンパイラではエラーが発生します。PL/SQLの予約語を識別子として使用する必要がある場合は、二重引用符で囲んでください。
SQLCHECK=SEMANTICS
を指定した場合、次のものを対象とした構文およびセマンティックのチェックが行われます。
INSERT
やUPDATE
などのデータ操作文
PL/SQLブロック
ただし、リモートのデータ操作文(AT db_name句を使用する文)については、構文チェックのみが行われます。
プリコンパイラは、意味検査に必要な情報を、埋め込まれたDECLARE
TABLE
文から取得します。また、オプションUSERID
が指定されている場合は、Oracleに接続してデータ・ディクショナリにアクセスするとこの情報を取得します。データ操作文やPL/SQLブロックで参照する表がすべてDECLARE TABLE
文で定義されている場合は、Oracleに接続する必要があります。
Oracleに接続してもデータ・ディクショナリで見つからない情報がある場合は、DECLARE TABLE
文を使用して、欠けている情報を提供する必要があります。プリコンパイル時には、DECLARE TABLE
文の定義とデータ・ディクショナリの定義が矛盾する場合、前者が優先されます。
新しいプログラムをプリコンパイルするときには、SQLCHECK=SEMANTICS
を指定してください。ホスト・プログラムにPL/SQLブロックを埋め込む場合は、SQLCHECK=SEMANTICS
とUSERID
オプションを指定する必要があります。
SQLCHECK=SYNTAX
の場合、プリコンパイラでは次のものの構文チェックを行います。
データ操作文
PL/SQLブロック
意味上のチェックは行いません。DECLARE TABLE
文は無視され、PL/SQLブロックは使用できません。データ操作文のチェックには、下位互換性のあるOracleデータベース・バージョン7構文規則が使用されます。プリコンパイル済のプログラムを移行する場合は、SQLCHECK=SYNTAX
を指定してください。
SQLCHECK=NONE
の場合、構文チェックもセマンティック・チェックも行われません。DECLARE TABLE文は無視され、PL/SQLブロックは使用できません。プログラムが次のような場合は、SQLCHECK=NONE
を指定してください。
Oracle以外のSQLが含まれる場合(たとえば、Oracle以外のサーバーにオープン・ゲートウェイを介して接続するため)
まだ作成されておらず、それらのためのDECLARE TABLE
文がない表を参照する場合
次の表に、SQLCHECKによって行われるチェックについてまとめます。構文およびセマンティックのチェックの詳細は、構文およびセマンティックのチェックを参照してください。
文 | SQLCHECK=SEMANTIC — 構文 | SQLCHECK=SEMANTIC — セマンティック | SQLCHECK=SYNTAX — 構文 | SQLCHECK=SYNTAX — セマンティック | SQLCHECK=NONE — 構文 | SQLCHECK=NONE — セマンティック |
---|---|---|---|---|---|---|
DML |
Y |
Y |
Y |
na |
na |
na |
リモートDML |
Y |
na |
Y |
na |
na |
na |
PL/SQL |
Y |
Y |
na |
na |
na |
na |
用途
動的SQL文の文キャッシュ・サイズを指定します。
構文
STMT_CACHE = 0から65535
デフォルト
0
使用上の注意
stmt_cacheオプションを設定すると、アプリケーションでそれぞれの動的SQL文の予測数を保持できます。
用途
構文およびセマンティック・チェックの種類と範囲を指定します。埋込みSQL文およびPL/SQLブロックの構文および意味を検査することで、Pro*C/C++プリコンパイラはコーディングの誤りをすみやかに発見し修正できるように支援します。構文規則は、言語要素を並べて正しい文を作成する基準を示します。したがって、キーワード、オブジェクト名、演算子、デリミタおよび類似のオブジェクトがSQL文に正しく配置されていることを検証できます。
構文
SQLCHECK={SEMANTICS | FULL | SYNTAX}
デフォルト
SYNTAX
機能
次に該当する場合
SQLCHECK=SYNTAX
クライアント側SQLインタフェースを使用してSQL文の構文がチェックされます。
次に該当する場合
SQLCHECK=SEMANTICS
またはFULL
SQL文は、解析中に一般的な文法を使用してIDLオブジェクトにパッケージ化またはバンドルされます。一般的な文法では、SQL構文は解釈されず、ホスト変数、インジケータ変数および可能なSQL識別子のみが識別されます。セマンティック・フェーズ中に、現在SQLに対して行われているのと同じ方法で、ホスト変数およびインジケータ変数の妥当性がチェックされます。表名、列名、型などのセマンティクスについても同じことが行われます。
使用上の注意
用途
THREADS=YESの場合、プリコンパイラではコンテキスト宣言を検索します。
構文
THREADS={YES | NO}
デフォルト
NO
使用上の注意
インラインでは入力できません。
マルチスレッド・サポートを必要とするプログラムには、すべてこのオプションを指定する必要があります。
THREADS=YESの場合、最初のコンテキストが現れ、実行SQL文が見つかる前にEXEC SQL CONTEXT USEディレクティブが検出されないと、プリコンパイラではエラーが発生します。
用途
このマイクロ・オプションは、動的SQL方法4でANSIまたはOracleのいずれのデータ型コードを使用するかを指定します。この設定は、MODEオプションの設定と同じです。
構文
TYPE_CODE={ORACLE | ANSI}
デフォルト
ORACLE
使用上の注意
インラインでは入力できません。
用途
UNSAFE_NULL=YES
を指定すると、インジケータ変数を使用せずにNULL
をフェッチしても、ORA-01405
メッセージは生成されません。
構文
UNSAFE_NULL={YES|NO}
デフォルト
NO
使用上の注意
インラインでは入力できません。
MODE=ORACLE
およびDBMS=V7の場合のみ、UNSAFE_NULL=YES
を指定できます。
埋込みPL/SQLブロックのホスト変数では、UNSAFE_NULL
オプションには何の効果もありません。ORA-01405
エラーを避けるには、インジケータ変数を使用する必要があります。
用途
Oracleユーザー名およびパスワードを指定します。
構文
USERID=
username
/
password
デフォルト
None
使用上の注意
インラインでは入力できません。
先頭にOracle初期化パラメータOS_AUTHENT_PREFIX
の付いたOracleユーザー名しか受け入れない自動接続機能を使用している場合は、このオプションを使用しないでください。
SQLCHECK=SEMANTICS
の場合、Oracleに接続し、データ・ディクショナリにアクセスして、プリコンパイラに必要な情報を取得させるには、USERIDも指定する必要があります。
用途
UNICODE(UTF16)変数で使用されるキャラクタ・セットの形式を指定します。
構文
UTF16_CHARSET={NCHAR_CHARSET | DB_CHARSET}
デフォルト
NCHAR_CHARSET
使用上の注意
コマンドラインまたは構成ファイルでのみ使用でき、インラインでは使用できません。
UTF16_CHARSET=NCHAR_CHARSET(デフォルト)の場合、UNICODE(UTF16)のバインドまたは定義バッファは、サーバー側の各国語キャラクタ・セットに従って変換されます。ターゲット列がCHARの場合は、パフォーマンスが低下することがあります。
UTF16_CHAR=DB_CHARSETの場合、UNICODE(UTF16)バインドまたは定義バッファは、データベースのキャラクタ・セットに従って変換されます。
警告:
ターゲット列がNCHARの場合、データが失われることがあります。
用途
Pro*COBOLの場合のみ、VARCHAR
オプションは、『Pro*COBOLプログラマーズ・ガイド』の第1章で説明されているCOBOLグループ項目をVARCHAR
データ型として扱うようにプリコンパイラに指示します。
構文
VARCHAR={YES|NO}
デフォルト
NO
使用上の注意
インラインでは入力できません。
VARCHAR=YES
の場合、『Pro*COBOLプログラマーズ・ガイド』の第1章で説明されている暗黙的なグループ項目は、長さフィールドおよび文字列フィールドを持つOracle VARCHAR外部データ型として受け入れられます。
VARCHAR=NO
の場合、Pro*COBOLプリコンパイラでは、暗黙的なグループ項目はVARCHAR
外部データ型としては受け入れられません。
用途
EXEC SQL OBJECT DEREF文によって戻されるオブジェクトのバージョンを指定します。
構文
VERSION={RECENT | LATEST | ANY}
デフォルト
RECENT
使用上の注意
EXEC ORACLE OPTION文を使用してインラインで入力できます。
RECENTは、現行のトランザクションでオブジェクトが選択されてオブジェクト・キャッシュに入っている場合、そのオブジェクトが戻されることを意味します。シリアライズ可能モードで実行中のトランザクションの場合、このオプションの効果はLATESTと同じですが、ネットワークのラウンドトリップはそれほど多くありません。ほとんどのアプリケーションには、RECENTが適切です。
LATESTは、オブジェクトがオブジェクト・キャッシュに存在しない場合、データベースから取得されることを意味します。オブジェクト・キャッシュに存在する場合は、サーバーからリフレッシュされます。LATESTを使用する場合、ネットワークのラウンドトリップ数が最大になるため注意してください。LATESTは、オブジェクト・キャッシュとサーバーのバッファ・キャッシュをできるかぎり一致させる必要がある場合にのみ使用してください。
ANYは、オブジェクトがすでにオブジェクト・キャッシュに存在している場合、そのオブジェクトが戻されることを意味します。キャッシュになければ、そのオブジェクトはサーバーから取得します。ANYを指定すると、ネットワークのラウンドトリップ数は最小になります。この値を使用するのは、アプリケーションが読取り専用オブジェクトにアクセスする場合や、ユーザーがオブジェクトに排他的にアクセスする場合です。