ヘッダーをスキップ
Pro*C/C++プログラマーズ・ガイド
11gリリース2(11.2)
B61343-01
  ドキュメント・ライブラリへ
ライブラリ
製品リストへ
製品
目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

10 プリコンパイラのオプション

この章では、Pro*C/C++プリコンパイラの実行方法とプリコンパイラ・オプションの拡張セットについて詳しく説明します。この章の項目は、次のとおりです。

プリコンパイラのコマンド

プリコンパイラの位置はシステムによって異なります。システム管理者またはデータベース管理者は、通常は論理名またはエイリアスを指定するか、その他のシステム固有の手段を使用して、Pro*C/C++実行ファイルをアクセス可能にします。

Pro*C/C++プリコンパイラを実行するには、次のコマンドを入力します。

proc option=value... 

注意:

オプション値は必ずオプション名に続く等号(前後のスペースなし)の後に指定します。

たとえば次のコマンドを入力するとします。

proc INAME=test_proc

カレント・ディレクトリのファイルtest_proc.pcがプリコンパイルされます。これは、プリコンパイラではファイル名の拡張子が.pcとみなされるためです。INAME=引数は、プリコンパイルされるソース・ファイルを指定します。INAMEオプションはコマンドラインの最初のオプションでなくてもかまいませんが、最初にくる場合はオプション指定を省略できます。したがって、次のコマンド

proc myfile 

は、次のオプションに相当します。

proc INAME=myfile 

注意:

特定のOSオブジェクト(たとえばファイル名)の名前を指定しないオプション名とオプション値には、大/小文字区別はありません。このマニュアル中の例では、オプション名は大文字で記述し、オプション値は通常は小文字で記述しています。Pro*C/C++プリコンパイラ実行ファイル自体も含めてファイル名を入力するときには、大/小文字区別に関してオペレーティング・システムの表記規則に従ってください。

UNIXなど一部のプラットフォームでは、値の文字列の前に特定のエスケープ文字が必要です。プラットフォーム固有のマニュアルを参照してください。


大/小文字区別

一般的に、プリコンパイラ・オプションの名前および値には、大文字と小文字のどちらを指定してもかまいません。ただし、UNIXのように大/小文字を区別するオペレーティング・システムの場合は、大文字および小文字を正しく組み合せて、Pro*C/C++実行ファイルの名前を含むファイル名を指定してください。

プリコンパイラのオプション

各オプションを使用すると、リソースの使用方法、エラーのレポート方法、入出力のフォーマット方法およびカーソルの管理方法を制御できます。

オプションの値はリテラルです。これらの値はテキスト値または数値です。たとえば次のオプションがあるとします。

...  INAME=my_test 

ここで、値はファイル名を表す文字列リテラルです。

次にMAXOPENCURSORSオプションの例を示します。

...MAXOPENCURSORS=20 

ここで、値は数値です。

一部のオプションはブール値をとり、文字列yesまたはnotrueまたはfalse、あるいは整数リテラル1または0で表すことができます。たとえば、次のオプション

...  SELECT_ERROR=yes 

は、次のオプションに相当します。

...  SELECT_ERROR=true

または次のオプションに相当します。

...  SELECT_ERROR=1 

これらはすべて、実行時にSELECTエラーが検出されることを意味しています。

環境変数

SYS_INCLUDEプリコンパイラ・オプションおよびINCLUDEプリコンパイラ・オプションでは、環境変数を使用できます。PROCアプリケーションをプリコンパイルするときは、SYS_INCLUDEディレクトリ・パスおよびINCLUDEディレクトリ・パスでORACLE_HOMEなどの環境変数を使用できます。また、CONFIGファイルpcscfg.cfgのSYS_INCLUDEオプション値およびINCLUDEオプション値を使用することもできます。環境変数の次の使用方法がサポートされています。

Linuxの場合

$ENV_VAR 
sys_include=$ORACLE_HOME/precomp/public
include=$ORACLE_HOME/precomp/public
 
$(ENV_VAR)
sys_include=$(ORACLE_HOME)/precomp/public
include=$(ORACLE_HOME)/precomp/public

${ENV_VAR}
sys_include=${ORACLE_HOME}/precomp/public
include=${ORACLE_HOME}/precomp/public

Windowsの場合

%ENV_VAR% 
sys_include=%ORACLE_HOME%\precomp\public
include=%ORACLE_HOME%\precomp\public
 

構成ファイル

構成ファイルは、プリコンパイラ・オプションを格納するテキスト・ファイルです。ファイル内の各レコード(行)には、オプション1つと、それに対応付けられた1つ以上の値が含まれます。1行に複数のオプションを入力すると、2番目以降のオプションは無視されます。たとえば、次の構成ファイルに次の行が含まれる場合があります。

FIPS=YES 
MODE=ANSI 
CODE=ANSI_C

これらの行は、FIPS、MODEおよびCODEオプションにデフォルト値を設定します。

pcscfg.cfgでは、各エントリの1行当たりの文字数は最大300文字に制限されています。SYS_INCLUDEパスなど、この値を300文字より長く設定するには、エントリを複数行で作成します。次に例を示します。

sys_include=/ade/aime_rdbms_9819/oracle/precomp/public 
sys_include=/usr/include,/usr/lib/gcc-lib/i486-suse-linux/2.95.3/include 
sys_include=/usr/lib/gcc-lib/i386-redhat-linux/3.2.3/include
sys_include=/usr/lib/gcc-lib/i386-redhat-linux7/2.96/include
sys_include=/usr/include

行末にはカッコを使用しないでください。行末にカッコを使用すると、前の行がすべて無効になります。たとえば、次のように3行目の行末にカッコがあると、次のエントリは、

sys_include=/ade/aime_rdbms_9819/oracle/precomp/public 
sys_include=/usr/include,/usr/lib/gcc-lib/i486-suse-linux/2.95.3/include 
sys_include=/usr/lib/gcc-lib/i386-redhat-linux/3.2.3/include)
sys_include=/usr/lib/gcc-lib/i386-redhat-linux7/2.96/include
sys_include=/usr/include

SYS_INCLUDEが次のように設定されます。

/usr/lib/gcc-lib/i386-redhat-linux/3.2.3/include, /usr/lib/gcc-lib/i386-redhat-linux7/2.96/include,/usr/include

インストールごとにシステム構成ファイルが1つあります。システム構成ファイルの名前はpcscfg.cfgです。このファイルの位置はシステムに依存します。


注意:

pcscfg.cfgファイルでは、空白を使用できません。たとえば、次のファイルに次の行が含まれるとします。

include="D:\Program Files\Microsoft Visual Studio\VC98\include"

プリコンパイルは失敗します。次の行に置き換えることができます。

include=D:\Progra~1\Microa~4\VC98\include


Pro*C/C++のユーザーはそれぞれ、1つ以上のプライベート構成ファイルを持つことができます。構成ファイルの名前は、必ずCONFIG=プリコンパイラ・オプションを使用して指定してください。


注意:

構成ファイルはネストできません。つまり、構成ファイル内では、CONFIG=は有効ではありません。

オプション値の優先順位

オプションの値は、優先順位の低いものから順に、次のように決定されます。

  • プリコンパイラに組み込まれている値

  • Pro*C/C++システム構成ファイル内の値の集合

  • Pro*C/C++ユーザー構成ファイル内の値の集合

  • コマンドラインで設定される値

  • インラインで設定される値

たとえば、MAXOPENCURSORSオプションでは、キャッシュ内のオープン・カーソルの最大数を指定します。このオプションのプリコンパイラに組み込まれたデフォルト値は10です。ただし、システム構成ファイルでMAXOPENCURSORS=32を指定すると、デフォルトは32になります。ユーザー構成ファイルでは、これをさらに別の値に設定できます。これはシステム構成ファイルの値より優先されます。最終的には、インライン指定が前述のすべてのデフォルト値よりも優先されます。

PROCコマンドライン・オプションが複数回使用されている場合、PROCでは、最後に使用されているPROCコマンドライン・オプションに割り当てられている最後の値をプリコンパイルに使用します。次に例を示します。

$ proc iname=sample.pc ... oname=output1.c ... oname=output2.c ... oname=output3.c

この例では、output3.cはPROCが使用するONAME値であり、生成される出力ファイル名はoutput3.cです。

CONFIGファイル(システム・デフォルトまたはユーザー定義)とコマンドラインの両方にオプションが指定されている場合は、コマンドラインで指定されている値が優先されます。

SYS_INCLUDEオプションおよびINCLUDEオプションの場合、動作は環境変数で定義されます。行末にはカッコで中断されない限り、値は追加されます。

プライベート構成ファイルをCONFIG=filenameで指定する場合、最初の値が優先され、コマンドラインの後続の値は無視されます。この場合は、例外的にコマンドラインの最後の値が優先されません。

USERIDなどの一部のオプションには、プリコンパイラ・デフォルト値がありません。オプションで組込みデフォルト値のあるものについては、表10-2を参照してください。


注意:

プリコンパイラのデフォルト値については、システム固有のマニュアルを参照してください。プラットフォーム上では、この章で示された値から変更されている可能性もあります。


関連項目


現在の設定値の確認

コマンドラインで疑問符(?)を使用すると、1つ以上のオプションの現在の設定値を対話形式で調べることができます。たとえば次のコマンドを発行するとします。

proc ? 

この場合、すべてのオプションが、現在の設定値とともに端末に出力(表示)されます。(UNIXシステムでCシェルを使用しているときには「?」をバックスラッシュでエスケープしてください。)この場合、値はプリコンパイラに組み込まれているもので、システム構成ファイルの値によって上書きされています。ただし、次のコマンド

proc config=my_config_file.h ?
 

を入力したときに、カレント・ディレクトリにmy_config_file.hというファイルがあると、すべてのオプションがリスト形式で表示されます。ユーザー構成ファイルの値によって、不足している値が補われ、Pro*C/Cプリコンパイラに組み込まれている値またはシステム構成ファイルに指定されている値が置き換えられます。

オプション名を指定し、その後ろに=?を付けるだけで、どれか1つのオプションの現在の設定値を調べることもできます。次に例を示します。

proc maxopencursors=? 

このように入力すると、MAXOPENCURSORSオプションの現在のデフォルト値が出力されます。

次のように入力するとします。

proc

すると、「プリコンパイラのオプション」のような短いサマリーが表示されます。

マクロ・オプションおよびマイクロ・オプション

MODEオプションは複数のオプションを同時に制御します。MODEはマクロ・オプションとも呼ばれます。CLOSE_ON_COMMIT、DYNAMICおよびTYPE_CODEなどのより新しいオプションは1つの関数のみを制御し、マイクロ・オプションとして知られています。マクロ・オプションは、高い優先順位が付けられている場合にのみ、マイクロ・オプションより優先されます。「オプション値の優先順位」を参照してください。

次の表は、マクロ・オプション値によって設定されるマイクロ・オプションの値を示しています。

表10-1 マクロ・オプション値によりマイクロ・オプション値が設定される方法

マクロ・オプション マイクロ・オプション

MODE=ANSI | ISO

CLOSE_ON_COMMIT=YES

DYNAMIC=ANSI

TYPE_CODE=ANSI

MODE=ORACLE

CLOSE_ON_COMMIT=NO

DYNAMIC=ORACLE

TYPE_CODE=ORACLE


ユーザー構成ファイルでMODE=ANSIとCLOSE_ON_COMMIT=NOの両方を指定すると、COMMITしてもカーソルはクローズしません。構成ファイルでMODE=ORACLEを指定し、コマンドラインでCLOSE_ON_COMMIT=YESを指定すると、カーソルはクローズします。

プリコンパイル中の状況

プリコンパイル時に、ホスト・プログラムに埋め込まれているSQL文は、Pro*C/C++が生成するCまたはC++のコードに置換されます。生成されたコードには、データ型、データ長、ホスト変数のアドレスを示すデータ構造や、ランタイム・ライブラリであるSQLLIBに必要なその他の情報も含まれています。またこのコードには、埋込みSQLの処理を実行するSQLLIBルーチンのコールも入っています。


注意:

プリコンパイラでは、Oracle Call Interface(OCI)ルーチンのコールは生成されません。

表10-2は主なプリコンパイラ・オプションのクイック・リファレンスです。受入れ可能でも効力を持たないオプションは、この表には記載されていません。


関連項目


オプションの適用範囲

プリコンパイル・ユニットは、Cコードと1つ以上の埋込みSQL文を含むファイルです。特定のプリコンパイル・ユニットに対して指定したオプションは、そのプリコンパイル・ユニットにのみ効力を持ちます。たとえば、ユニットAに対してHOLD_CURSOR=YESおよびRELEASE_CURSOR=YESを指定し、ユニットBには指定しなければ、ユニットAのSQL文はこれらのHOLD_CURSOR値およびRELEASE_CURSOR値を使用して実行されますが、ユニットBのSQL文はデフォルト値を使用して実行されます。

Windowsプラットフォーム用Pro*C/C++プリコンパイラの問題

この項では、Windowsプラットフォーム用Pro*C/C++関連の問題について説明します。

構成ファイル

このリリースでは、システム構成ファイルをpcscfg.cfgと呼びます。このファイルは、ORACLE_HOME\precomp\adminディレクトリにあります。

CODE

CODEオプションのデフォルト設定はANSI_Cです。他のオペレーティング・システム用のPro*C/C++では、デフォルト設定がKR_Cになっている場合があります。

DBMS

DBMS=V6_CHARは、CHAR_MAP=VARCHAR2使用時にサポートされません。かわりに、DBMS=V7を使用します。

INCLUDE

PARSE=PARTIALまたはPARSE=FULLでプリコンパイルするサンプル・プログラムの場合、c:\program files\devstudio\vc\includeのインクルード・パスが追加されています。Microsoft Visual Studioが別の場所にインストールされている場合、サンプル・プログラムで正しくプリコンパイルするために、「インクルード・ディレクトリ」フィールドを適宜変更します。

PARSE

PARSEオプションのデフォルト設定はNONEです。他のオペレーティング・システム用のPro*C/C++では、デフォルト設定がFULLになっている場合があります。

クイック・リファレンス

表10-2は、Pro*C/C++オプションのクイック・リファレンスです。アスタリスクでマークされたオプションはインラインで入力できます。

表10-2 プリコンパイラのオプション

構文 デフォルト値 指定

AUTO_CONNECT={YES | NO}

NO

最初の実行文の前の自動CLUSTER$アカウント接続。

CHAR_MAP={VARCHAR2 | CHARZ | STRING | CHARF} *

CHARZ

文字配列および文字列のマッピング。

CINCR

1

現在の物理接続数がCMAX値より少ない場合、データベースに対してオープンされる物理接続数の次の増分をアプリケーションで設定できるようにします。

CLOSE_ON_COMMIT={YES | NO}

NO

COMMIT時にすべてのカーソルをクローズします。

CODE={ANSI_C | KR_C | CPP}

KR_C

生成されるCコードの種類。

COMP_CHARSET={MULTI_BYTE | SINGLE_BYTE}

MULTI_BYTE

C/C++コンパイラがサポートするキャラクタ・セットの型。

CONFIG=filename

なし

ユーザーのプライベート構成ファイル。

CMIN

2

接続プール内の最小物理接続数を指定します。

CMAX

100

データベースに対してオープン可能な最大物理接続数を指定します。

CNOWAIT

0(未設定)。

この属性は、プール内の物理接続がすべて使用中で、物理接続の合計数がすでに最大値に達している場合に、アプリケーションで繰り返し物理接続を要求する必要があるかどうかを決定します。

CPOOL

NO

このオプションに基づいて、プリコンパイラは、SQLLIBに対して接続プーリング機能を使用可能または使用禁止にするように指示する適切なコードを生成します。

CPP_SUFFIX=extension

なし

出力ファイルのデフォルトのファイルの拡張子を指定します。

CTIMEOUT

0(未設定)。

指定された期間(秒単位)より長い間アイドル状態になっている物理接続を終了し、オープンされている物理接続数を最適に保ちます。

DBMS={V7 | NATIVE | V8}

NATIVE

互換性(Oracle7、Oracle8、Oracle8i、Oracle9iまたはプリコンパイル時に接続されていたデータベースのバージョン)。

DEF_SQLCODE={YES | NO}

NO

#define SQLCODEに対するマクロを生成します。

DEFINE=name *

なし

Pro*C/C++プリコンパイラで使用する名前を定義します。

DURATION={TRANSACTION | SESSION}

TRANSACTION

キャッシュ内のオブジェクトの確保継続時間を設定します。

DYNAMIC={ANSI | ORACLE}

ORACLE

OracleまたはANSI SQLの意味を指定します。

ERRORS={YES | NO}

YES

エラー・メッセージの送り先(NOを指定すると、リスト・ファイルにのみ送られ、端末には送られません)。

ERRTYPE=filename

なし

intypeファイル・エラー・メッセージのリスト・ファイル名。

FIPS={NO | SQL89 | SQL2 | YES} *

なし

ANSI/ISO非準拠を切り替えるかどうか。

HEADER=extension

なし

プリコンパイルされたヘッダー・ファイルのファイル拡張子。

HOLD_CURSOR={YES | NO} *

NO

カーソル・キャッシュがSQL文を処理する方法。

INAME=]filename

なし

入力ファイルの名前。

INCLUDE=pathname *

なし

EXEC SQL INCLUDE文または#include文のディレクトリ・パス。

INTYPE=filename

なし

型情報の入力ファイル名。

LINES={YES | NO}

NO

#lineディレクティブを生成するかどうか。

LNAME=filename

なし

リスト・ファイルの名前。

LTYPE={NONE | SHORT | LONG}

なし

生成するリスト・ファイルの型(生成する場合)。

MAXLITERAL=10..1024

1024

生成されるCコードの文字列リテラルの最大長(バイト)。

MAXOPENCURSORS=5〜255 *

10

同時にキャッシュされるオープン・カーソルの最大数。

MODE={ANSI | ISO | ORACLE}

ORACLE

ANSI/ISOまたはOracleの動作。

NATIVE_TYPES

NO

ネイティブfloatおよびdoubleのサポート。

NLS_CHAR=(var1,..., varn)

なし

マルチバイトの文字変数を指定します。

NLS_LOCAL={YES | NO}

NO

マルチバイト文字の意味を制御します。

OBJECTS={YES | NO}

YES

オブジェクト型をサポートします。

ONAME=]filename

iname.c

出力(コード)ファイルの名前。

ORACA={YES | NO} *

NO

ORACAを使用するかどうか。

PAGELEN=30..256

80

リスト・ファイルのページ長。

PARSE={NONE | PARTIAL | FULL}

FULL

Pro*C/C++で(Cパーサーで).pcソース・コードが解析されるかどうか。

PREFETCH=0..65535

1

任意の行数を事前に取得して問合せの実行速度を向上させます。

RELEASE_CURSOR={YES | NO} *

NO

カーソル・キャッシュからのカーソルの解放を制御します。

SELECT_ERROR={YES | NO} *

YES

SELECTエラーのフラグ付け。

SQLCHECK={SEMANTICS | SYNTAX} *

SYNTAX

プリコンパイル時のSQLチェック量。

SYS_INCLUDE=pathname

なし

iostream.hなどのシステム・ヘッダー・ファイルがあるディレクトリ。

THREADS={YES | NO}

NO

マルチスレッド・アプリケーションを指定します。

TYPE_CODE={ORACLE | ANSI}

ORACLE

動的SQLのOracleまたはANSI型コードの使用方法。

UNSAFE_NULL={YES | NO}

NO

UNSAFE_NULL=YESと指定するとORA-01405メッセージが使用されなくなります。

USERID=username/password[@dbname]

なし

username/password[@dbname]接続文字列

UTF16_CHARSET={NCHAR_CHARSET | DB_CHARSET}

NCHAR_CHARSET

UNICODE(UTF16)で使用されるキャラクタ・セットの書式を指定します。

VARCHAR={YES | NO}

NO

暗黙的VARCHAR構造体の使用を許可するかどうか。

VERSION={ANY | LATEST | RECENT} *

RECENT

どのバージョンのオブジェクトを戻すか。


オプションの入力

どのプリコンパイラ・オプションも、コマンドラインに入力できます。また、その多くは、EXEC ORACLE OPTION文を使用してプリコンパイラ・プログラムのソース・ファイルにインライン入力できます。

コマンドライン

プリコンパイラ・オプションをコマンドラインに入力するには、次の構文を使用します。

... [OPTION_NAME=value] [OPTION_NAME=value] ... 

それぞれのオプション=値の指定は、1つ以上の空白で区切ります。たとえば、次のように入力します。

... CODE=ANSI_C MODE=ANSI 

インライン

次の構文を使用してEXEC ORACLE文を記述すると、オプションをインライン入力できます。

EXEC ORACLE OPTION (OPTION_NAME=value); 

たとえば、次のように記述します。

EXEC ORACLE OPTION (RELEASE_CURSOR=yes); 

EXEC ORACLEの用途

EXEC ORACLE機能は、プリコンパイル中にオプション値を変更する場合に特に便利です。たとえば、HOLD_CURSORとRELEASE_CURSORを1文単位で変更する場合があります。


関連項目

インライン・オプションを使用して実行時パフォーマンスを最適化する方法は、付録C「パフォーマンス・チューニング」を参照してください。

また、コマンドラインで入力できる文字数が、使用しているオペレーティング・システムで制限されているときは、オプションをインラインまたは構成ファイルで指定すると便利です。

EXEC ORACLEの適用範囲

EXEC ORACLE文は、同一オプションを指定した別のEXEC ORACLE文によってオプション指定値(テキスト)が変更されるまで有効です。次の例では、HOLD_CURSOR=NOはHOLD_CURSOR=YESが指定されるまで有効です。

char emp_name[20]; 
int  emp_number, dept_number; 
float salary; 
 
EXEC SQL WHENEVER NOT FOUND DO break; 
EXEC ORACLE OPTION (HOLD_CURSOR=NO); 
 
EXEC SQL DECLARE emp_cursor CURSOR FOR 
SELECT empno, deptno FROM emp; 
 
EXEC SQL OPEN emp_cursor; 
printf( 
"Employee Number  Department\n--------------------------\n"); 
for (;;) 
{ 
   EXEC SQL FETCH emp_cursor INTO :emp_number, :dept_number; 
   printf("%d\t%d\n", emp_number, dept_number); 
} 
 
EXEC SQL WHENEVER NOT FOUND CONTINUE; 
for (;;) 
{ 
   printf("Employee number: "); 
   scanf("%d", &emp_number); 
   if (emp_number == 0) 
      break; 
   EXEC ORACLE OPTION (HOLD_CURSOR=YES); 
   EXEC SQL SELECT ename, sal 
      INTO :emp_name, :salary 
      FROM emp WHERE empno = :emp_number; 
   printf("Salary for %s is %6.2f.\n", emp_name, salary); 

プリコンパイラ・オプションの使用

この項は、プリコンパイラ・オプションを簡単に参照できるように構成されています。プリコンパイラ・オプションはアルファベット順に記載されています。また、オプション別にその用途、構文およびデフォルト値も示してあります。さらに「使用上の注意」の欄で、オプションの働きを説明します。

AUTO_CONNECT

用途

CLUSTER$アカウントへの自動接続を可能にします。

構文

AUTO_CONNECT={YES | NO}

デフォルト値

NO

使用上の注意

入力できるのは、コマンドラインまたは構成ファイルからのみです。

AUTO_CONNECT=YESで、最初の実行SQL文を処理するときにアプリケーションがまだデータベースに接続されていない場合、次のユーザーIDを使用して接続が試行されます。

CLUSTER$username

usernameは現行のオペレーティング・システムのユーザー名またはタスク名、CLUSTER$usernameは有効なOracleユーザーIDです。

AUTO_CONNECT=NOの場合、Oracleに接続するにはプログラムでCONNECT文を使用する必要があります。

CHAR_MAP

用途

char型またはchar[n]配列型のCホスト変数およびそれらへのポインタのSQLへのデフォルトのマッピングを指定します。

構文

CHAR_MAP={VARCHAR2 | CHARZ | STRING | CHARF}

デフォルト値

CHARZ

使用上の注意

リリース8.0より前のリリースでは、SQL DECLARE文を使用してCHARなどのcharまたはchar[n]ホスト変数を宣言する必要がありました。外部データ型VARCHAR2およびCHARZが、Oracle7のデフォルト文字マッピングでした。


関連項目


CINCR

用途

データベースに対してオープンされる物理接続数の次の増分をアプリケーションで設定できるようにします。

構文

CINCR = 1〜(CMAX-CMIN)。

デフォルト値

1

使用上の注意

最初は、CMINにより指定された物理接続数がすべてサーバーに対してオープンされます。その後、必要な場合にのみ物理接続がオープンされます。パフォーマンスを最適にするには、CMINを、アプリケーションによる実行が計画または想定される同時実行文の合計数に設定する必要があります。デフォルト値は2です。

CLOSE_ON_COMMIT

用途

WITH HOLD句を指定しないで宣言されたすべてのカーソールをコミット時にクローズするかどうかを指定します。

構文

CLOSE_ON_COMMIT={YES | NO}

デフォルト値

NO

使用上の注意

入力できるのは、コマンドラインまたは構成ファイルからのみです。

このオプションは、カーソルがDECLARE CURSOR文でWITH HOLD句を使用してコードされていない場合にのみ有効です。これは、MODEオプションで関連付けられている新しいオプションと既存の動作の両方が上書きれるためです。MODEがCLOSE_ON_COMMITよりも高いレベルに指定されている場合は、MODEが優先されます。たとえば、デフォルトではMODE=ORACLEおよびCLOSE_ON_COMMIT=NOと設定されています。ユーザーがコマンドラインでMODE=ANSIと指定する場合、コミット時にWITH HOLD句を使用していないすべてのカーソルがクローズされます。

CLOSE_ON_COMMIT=NO(MODE=ORACLEのとき)の場合、COMMITまたはROLLBACKを発行すると、FOR UPDATE句を使用して宣言されるカーソル、またはCURRENT OF句内で参照されるカーソルのみが宣言されます。COMMITまたはROLLBACK文の影響を受けない他のカーソルは、すでにオープンされている場合は、オープンのままです。ただし、CLOSE_ON_COMMIT=YES(MODE=ANSIのとき)場合は、COMMITまたはROLLBACKを発行すると、すべての明示カーソルがクローズされます。


関連項目


CMAX

用途

データベースに対してオープン可能な最大物理接続数を指定します。

構文

CINCR = 1〜65535

デフォルト値

100

使用上の注意

CMAX値は、CMIN+CINCRより大きく設定する必要があります。この値に達すると、物理接続をそれ以上オープンできません。通常のアプリケーションでは、同時データベース操作を100個実行するように設定すれば十分です。ユーザーが適切な値を設定できます。

CMIN

用途

データベースに対してオープン可能な最小物理接続数を指定します。

構文

CINCR = 1〜(CMAX-CINCR)。

デフォルト値

2

使用上の注意

CMAX値は、CMIN+CINCRより大きく設定する必要があります。この値に達すると、物理接続をそれ以上オープンできません。通常のアプリケーションでは、同時データベース操作を100個実行するように設定すれば十分です。ユーザーが適切な値を設定できます。

CNOWAIT

用途

この属性は、プール内の物理接続がすべて使用中で、物理接続の合計数がすでに最大値に達している場合に、アプリケーションで繰り返し物理接続を要求する必要があるかどうかを決定します。

構文

CNOWAIT = 1〜65535。

デフォルト値

0(未設定)。

使用上の注意

物理接続が使用可能でなく、これ以上物理接続をオープンできない場合、この属性が設定されているとエラーが発生します。設定されていない場合、別の接続が取得されるまでコールは待機します。CNOWAITはデフォルトでは設定されないため、スレッドはエラーを返すのではなく、空いている接続を取得できるまで待機します。

CODE

用途

Pro*C/C++プリコンパイラで生成されるC関数プロトタイプの形式を指定します。(関数プロトタイプを使用して、関数およびその引数のデータ型を宣言します。)プリコンパイラではSQLライブラリ・ルーチン用の関数プロトタイプが生成されます。それによって、Cコンパイラは外部参照を解決できます。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++互換コードを生成します。


関連項目

このオプション値を使用するすべての結果は、「コードの生成」を参照してください。

COMMON_PARSER

用途

SELECT、INSERT、DELETEおよびUPDATEのSQL99構文と、DECLARE CURSOR文のカーソル本体がサポートされるように指定します。

構文

COMMON_PARSER={YES | NO}

デフォルト値

NO

使用上の注意

コマンドラインから入力できます。

COMP_CHARSET

用途

使用するコンパイラでマルチバイト・キャラクタ・セットがサポートされているかどうかを、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

用途

ユーザー構成ファイルの名前を指定します。

構文

CONFIG=filename

デフォルト値

なし

使用上の注意

入力できるのは、コマンドラインのみです。

ユーザー構成ファイルの名前および位置をPro*C/C++に通知する方法は、このオプション以外にありません。

CPOOL

用途

このオプションに基づいて、プリコンパイラは、SQLLIBに対して接続プーリング機能を使用可能または使用禁止にするように指示する適切なコードを生成します。

構文

CPOOL = {YES|NO}

デフォルト値

NO

使用上の注意

このオプションがNOに設定されている場合、プリコンパイラはその他の接続プーリング・オプションを無視します。

CPP_SUFFIX

用途

CPP_SUFFIXオプションを使用すると、CODE=CPPオプションを指定した場合に生成されるC++出力ファイルに、プリコンパイラにより付加されるファイルの拡張子を指定できます。

構文

CPP_SUFFIX=filename_extension

デフォルト値

システム固有

使用上の注意

ほとんどのCコンパイラでは、入力ファイルのデフォルト拡張子は「.c」とみなされます。ただし、C++コンパイラでは、想定されるファイルの拡張子がコンパイラごとに異なる場合があります。CPP_SUFFIXオプションを使用すると、プリコンパイラで生成されるファイルの拡張子を指定できます。このオプションの値は、引用符もピリオドも付けない文字列です。たとえば、CPP_SUFFIX=ccまたはCPP_SUFFIX=Cのように指定します。

CTIMEOUT

用途

指定された期間(秒単位)より長い間アイドル状態になっている物理接続を終了し、オープンされている物理接続数を最適に保ちます。

構文

CTIMEOUT = 1〜65535。

デフォルト値

0(未設定)。

使用上の注意

接続プールが終了するまで物理接続はクローズしません。物理接続を新しく作成すると、サーバーへのラウンドトリップが必要になります。

DB2_ARRAY

用途

このオプションに基づいて、プリコンパイラでは追加の配列の挿入/選択構文をアクティブにします。

構文

DB2_ARRAY={YES |NO}

デフォルト値

NO

使用上の注意

このオプションがNOに設定されている場合、Oracleプリコンパイラ構文がサポートされ、設定されていない場合は、DB2配列挿入/選択構文がサポートされます。

DBMS

用途

OracleがOracle9i、Oracle8i、Oracle8、Oracle7、あるいはOracleのネイティブ・バージョン(つまり、アプリケーションが接続しているバージョン)のうち、どの意味上および構文上の規則に従うかを指定します。

構文

DBMS=NATIVE | V7 | V8

デフォルト値

NATIVE

使用上の注意

入力できるのは、コマンドラインまたは構成ファイルからのみです。

DBMSオプションの指定によりOracleのバージョンに固有の動作を制御できます。DBMS=NATIVE(デフォルト値)のとき、Oracleはアプリケーションが接続しているデータベース・バージョンの意味上および構文上の規則に従います。

DBMS=V8またはDBMS=V7のときは、OracleはそれぞれOracle9iの規則(Oracle7、Oracle8およびOracle8iの場合と同じ規則)に従います。

OracleではV6_CHARはサポートされておらず、この機能はCHAR_MAPプリコンパイラ・オプションに用意されています。


関連項目

「CHAR_MAP」

表10-3 DBMSとMODEの相互作用

状況 DBMS=V7 | V8MODE=ANSI DBMS=V7 | V8MODE=ORACLE

「データが見つかりません」という警告コード

+100

+1403

標識変数を使用しないNULLのフェッチ

エラー-01405

エラー-01405

標識変数を使用しない切捨て値のフェッチ

エラーはなし。sqlwarn[1]が設定されます。

エラーはなし。sqlwarn[1]が設定されます。

COMMITまたはROLLBACKによるカーソルのクローズ

すべて明示的に実行されます。

CURRENT OFのみ

すでにオープンしているカーソルのオープン

エラー-02117

エラーにならない

すでにクローズしているカーソルのクローズ

エラー-02114

エラーにならない

SQLグループ関数によるNULLの無視

警告なし

警告なし

複数行の問合せでSQLグループ関数をコールするタイミング

FETCH時

FETCH時

SQLCA構造体の宣言

オプション

必須

SQLCODEまたはSQLSTATE状態変数の宣言

必須

指定できるがOracleは無視

整合性制約

有効

有効

ロールバック・セグメント用PCTINCREASE

使用不可

使用不可

MAXEXTENTS記憶域パラメータ

使用不可

使用不可


DEF_SQLCODE

用途

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を組み込まなければ、このオプションを使用するとプリコンパイル時にエラーが発生します。

DEFINE

用途

#ifdefおよび#ifndef Pro*C/C++プリコンパイラ・ディレクティブで使用できる名称を定義します。定義された名称はEXEC ORACLE IFDEFとEXEC ORACLE IFNDEF文でも使用できます。

構文

DEFINE=name

デフォルト値

なし

使用上の注意

コマンドラインまたはインラインで入力できます。DEFINEでは名称しか定義できません。マクロは定義できません。たとえば、次のような定義は無効です。

proc my_prog DEFINE=LEN=20 

DEFINE文を正しく使用すれば、次のような指定ができます。

proc my_prog DEFINE=XYZZY 

するとmy_prog.pcに次のコードを記述できるようになります。

#ifdef XYZZY 
... 
#else 
... 
#endif 

または、単純にコーディングできます。

EXEC ORACLE IFDEF XYZZY; 
... 
EXEC ORACLE ELSE; 
... 
EXEC ORACLE ENDIF; 

次の例は無効です。

#define XYZZY
...
EXEC ORACLE IFDEF XYZZY
...
EXEC ORACLE ENDIF;

EXEC ORACLE DEFINEまたはDEFINEオプションでマクロが定義されているときにかぎり、EXEC ORACLE条件文が有効となります。

DEFINE=を使用して名前を定義してから、Pro*C/C++プリコンパイラの#ifdef(または#ifndef)ディレクティブを使用して条件を含めた(または除外した)場合は、Cコンパイラを実行するときにその名前が定義されていることを確認します。たとえば、UNIXのccでは、-Dオプションを使用してCコンパイラの名前を定義する必要があります。

DURATION

用途

後続のEXEC SQL OBJECT CREATE文とEXEC SQL OBJECT DEREF文に使用される確保継続時間を設定します。キャッシュ内のオブジェクトは、保持期間の終わりに暗黙的に解放されます。

構文

DURATION={TRANSACTION | SESSION}

デフォルト値

TRANSACTION

使用上の注意

EXEC ORACLE OPTION文を使用してインライン入力できます。

TRANSACTIONは、オブジェクトがトランザクションの完了時に暗黙的に解放されることを意味します。

SESSIONは、オブジェクトが接続の終了時に暗黙的に解放されることを意味します。

DYNAMIC

用途

このマイクロ・オプションでは、動的SQL方法4の記述子の動作を指定します。MODEの設定によりDYNAMICの設定が決定されます。

構文

DYNAMIC={ORACLE | ANSI}

デフォルト値

ORACLE

使用上の注意

EXEC ORACLE OPTION文を使用してインライン入力できません。

DYNAMICオプション設定については、表14-2を参照してください。

ERRORS

用途

エラー・メッセージを端末とリスト・ファイルの両方に送信(YES)するか、リスト・ファイルにのみ送信(NO)するかを指定します。

構文

ERRORS={YES | NO}

デフォルト値

YES

使用上の注意

入力できるのは、コマンドラインまたは構成ファイルからのみです。

ERRTYPE

用途

型ファイルの処理時に生成されたエラーを書き込む出力ファイルを指定します。このオプションを省略すると、エラーは画面に出力されます。「INTYPE」も参照してください。

構文

ERRTYPE=filename

デフォルト値

なし

使用上の注意

エラー・ファイルが1つのみ生成されます。複数の値を入力すると、最後の値がプリコンパイラに使用されます。

EVENTS

用途

アプリケーションが通知の登録および受信に対応しているかどうかを指定します。

構文

EVENTS={YES | NO}

デフォルト値

NO

使用上の注意

コマンドラインからのみ入力できます。

FIPS

用途

ANSI SQLの拡張機能に(FIPSフラガーで)フラグを立てるかどうかを指定します。拡張機能とは、ANSIの形式または構文規則(権限適用規則は除く)に違反するSQL要素を指します。

構文

FIPS={SQL89 | SQL2 | YES | NO}

デフォルト値

なし

使用上の注意

インラインまたはコマンドラインで入力できます。

FIPS=YESのとき、FIPSフラガーは使用可能になります。このときANSI SQLのOracle拡張機能または非準拠の方法でANSI SQL機能を使用すると、(エラーではなく)警告メッセージが発行されます。プリコンパイル時にフラグ付けされるANSI SQL拡張機能には次のものがあります。

  • FOR句を含む配列インタフェース

  • SQLCA、ORACAおよびSQLDAデータ構造体

  • DESCRIBE文を含む動的SQL

  • 埋込みPL/SQLブロック

  • 自動データ型変換

  • DATE、NUMBER、RAW、LONGRAW、VARRAW、ROWID、VARCHAR2およびVARCHARデータ型

  • ポインタ・ホスト変数

  • ランタイム・オプション指定用のOracle OPTION文

  • ユーザー・イグジットのTOOLS文

  • CONNECT文

  • TYPEおよびVARデータ型の同等文

  • AT db_name

  • DECLARE...DATABASE文、...STATEMENT文および...TABLE文

  • WHENEVER文でのSQLWARNING条件

  • WHENEVER文におけるDO function_name()、DO BREAKアクションおよびDO CONTINUEアクション

  • COMMIT文でのCOMMENT句とFORCE TRANSACTION句

  • ROLLBACK文でのFORCE TRANSACTION句およびTO SAVEPOINT句

  • COMMIT文およびROLLBACK文でのRELEASEパラメータ

  • WHENEVER...GOTOラベルおよびINTO句のホスト変数の前に任意指定で付加するコロン

HEADER

用途

プリコンパイル済ヘッダー・ファイルを許可します。プリコンパイル済ヘッダー・ファイルのファイル拡張子を指定します。

構文

HEADER=extension

デフォルト値

なし

使用上の注意

ヘッダー・ファイルをプリコンパイルする場合、このオプションは必須で、ヘッダー・ファイルのプリコンパイルによって生成される出力ファイルのファイル拡張子を指定するために使用されます。

通常のPro*C/C++プログラムをプリコンパイルする場合、このオプションはオプションで設定します。指定すると、Pro*C/C++プログラムのプリコンパイル時にヘッダーのプリコンパイル機能が使用できます。

どちらの場合も、このオプションで#includeディレクティブを処理するときに使用するファイル拡張子を指定できます。指定した拡張子の#includeファイルが存在する場合、Pro*C/C++はそのファイルをPro*C/C++で以前に生成されたプリコンパイル済ヘッダー・ファイルとみなします。#includeディレクティブを処理してインクルードされるヘッダー・ファイルをプリコンパイルするかわりに、そのファイルからデータをインスタンス化します。

このオプションは、コマンドラインまたは構成ファイルでのみ使用できます。インラインでは使用できません。このオプションを使用する場合は、ファイル拡張子のみを指定します。ファイル・セパレータは含めないでください。たとえば、拡張子にピリオド(.)は含めません。

HOLD_CURSOR

用途

カーソル・キャッシュでのSQL文およびPL/SQLブロック用カーソルの取扱い方法を指定します。

構文

HOLD_CURSOR={YES | NO}

デフォルト値

NO

使用上の注意

インラインまたはコマンドラインで入力できます。

HOLD_CURSORを使用すると、プログラムのパフォーマンスを改善できます。付録C「パフォーマンス・チューニング」も参照してください。

SQL DML文を実行すると、その文に対応付けられたカーソルがカーソル・キャッシュ内のエントリにリンクされます。続いてカーソル・キャッシュ・エントリはOracleプライベートSQL領域にリンクされます。この領域にはSQL文の実行に必要な情報が格納されます。HOLD_CURSORではカーソルとカーソル・キャッシュの間のリンクで発生する処理を制御します。

HOLD_CURSOR=NOのとき、OracleがSQL文を実行してカーソルがクローズされた後に、プリコンパイラはそのリンクに再利用可能とマークします。このリンクは、それが示すカーソル・キャッシュ・エントリが別のSQL文に必要になると、すぐに再使用されます。これにより、プライベートSQL領域に割り当てられたメモリーが解放され、解析ロックが解除されます。

HOLD_CURSOR=YESのときは、リンクが保持されます。つまり、プリコンパイラではそのリンクが再利用されません。これは、以降の実行速度が改善されるため、頻繁に実行される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

用途

新しいバッチ挿入の開始前に、暗黙的セーブポイントが設定されるかどうかを制御します。

構文

implicit_svpt={YES|NO}

デフォルト値

NO

使用上の注意

implict_svpt=yesの場合、行の新しいバッチの開始前に、セーブポイントが設定されます。挿入でエラーが発生した場合、暗黙的セーブポイントまでのロールバックが実行されます。このオプションは、DB2との互換性のために用意されていますが、余分なラウンドトリップとなるためマイナス面であることは明らかです。

implict_svpt=noの場合、暗黙的セーブポイントは設定されません。バッファ挿入でエラーが発生した場合、アプリケーションには報告されますが、ロールバックは実行されません。

INAME

用途

入力ファイル名を指定します。

構文

INAME=path_and_filename

デフォルト値

なし

使用上の注意

入力できるのは、コマンドラインのみです。

すべての入力ファイル名はプリコンパイル時に一意である必要があります。

ファイル名拡張子が.pcの場合は省略できます。入力ファイル名がコマンドラインの先頭オプションになっているときは、オプションのINAME=の部分を省略できます。次に例を示します。

proc sample1 MODE=ansi 

この例では、ANSIモードを使用してファイルsample1.pcをプリコンパイルします。このコマンドは次のコマンドに相当します。

proc INAME=sample1 MODE=ansi

注意:

sqlctxハッシュ値は、Pro*C/C++コマンドに渡されるINAMEパラメータに基づいて生成されます。そのため、同じ名前の複数のファイルが、異なる関数を含む異なるディレクトリに格納されており、プログラムのプリコンパイルのためにビルド・スクリプトが物理ディレクトリに送られるようなアプリケーションでは、問題が発生する可能性があります。したがって、より高いレベルにMakeファイルを配置し、そのパス名を使用してファイルをプリコンパイルする必要はありません。

INCLUDE

用途

#includeまたはEXEC SQL INCLUDEディレクティブによって取り込まれるファイルのディレクトリ・パスを指定します。

構文

INCLUDE=pathnameまたはINCLUDE=(path_1,path_2,...,path_n)

デフォルト値

Pro*C/C++にインクルードするカレント・ディレクトリおよびパス

使用上の注意

インラインまたはコマンドラインで入力できます。

INCLUDEは、インクルードされたファイルに対するディレクトリ・パスを指定するために使用します。プリコンパイラでは、次の順序でディレクトリが検索されます。

  1. カレント・ディレクトリ

  2. SYS_INCLUDEプリコンパイラ・オプションに指定されているシステム・ディレクトリ

  3. INCLUDEオプションで指定された入力順のディレクトリ

  4. 標準ヘッダー・ファイル用の組込みディレクトリ

通常、Oracle固有のヘッダー・ファイルsqlca.hsqlda.hなどのディレクトリ・パスを指定する必要はありません。


注意:

インクルードするファイルにOracle固有のファイル名を拡張子なしで指定すると、Pro*C/C++は拡張子.hとみなします。このため、インクルード・ファイルには、.hではないにせよ、拡張子を付ける必要があります。

他のすべてのヘッダー・ファイルに対しては、プリコンパイラは拡張子.hを想定しません。

非標準ファイルの場合は、カレント・ディレクトリに格納されていないかぎり、INCLUDEを使用してディレクトリ・パスを指定する必要があります。次に示すように、コマンドラインに複数のパスを指定できます。

... INCLUDE=path_1 INCLUDE=path_2 ...

注意:

 インクルードするファイルが別ディレクトリに存在している場合には、カレント・ディレクトリには同じ名前のファイルがないことを確認してください。

INCLUDEオプションを使用してディレクトリ・パスを指定する構文は、システムによって異なります。各オペレーティング・システムの規則に従ってください。


注意:

INCLUDEオプションの場合、オプション値の優先順位が逆になります。値が上書きされる他のオプションとは異なり、INCLUDEは次の場所で指定されたすべてのディレクトリ・ファイルを追加します。
  • プリコンパイラ

  • Pro*C/C++システム構成ファイル

  • Pro*C/C++ユーザー構成ファイル

  • コマンドライン

  • インライン

ただし、カッコ内またはカッコなしでの値の渡し方には違いがあります。カッコ内で単一の値またはディレクトリ・リストを渡す場合、INCLUDEの既存の値は上書きされます。リストをカッコなしの単純な値として渡す場合、既存の値に追加されます。


INTYPE

用途

OTTに生成された型ファイルを1つ以上指定します(アプリケーションでオブジェクト型が使用される場合にのみ必要です)。

構文

INTYPE=(file_1,file_2,...,file_n)

デフォルト値

なし

使用上の注意

Pro*C/C++コードにはオブジェクト型1つにつき、1つの型ファイルが存在します。

LINES

用途

Pro*C/C++プリコンパイラでその出力ファイルに#lineプリプロセッサ・ディレクティブが追加されるかどうかを指定します。

構文

LINES={YES | NO}

デフォルト値

NO

使用上の注意

入力できるのは、コマンドラインのみです。

LINESオプションはデバッグに便利です。

LINES=YESのとき、Pro*C/C++プリコンパイラは出力ファイルに#lineプリプロセッサ・ディレクティブを追加します。

通常、Cコンパイラではそれぞれの入力行が処理されるたびに行カウントを増やします。#lineディレクティブは、コンパイラの入力行カウンタを強制的にリセットして、プリコンパイラが生成したコードを数えないようにします。さらに、入力ファイルの名前が変わったときに、次の#lineディレクティブが新しいファイル名を指定します。

Cコンパイラは行番号およびファイル名を使用してエラーの発生位置を示します。したがって、Cコンパイラによって発行されたエラー・メッセージは、修正済(プリコンパイル済)のソース・ファイルではなく、元のソース・ファイルを常に参照します。これにより、ほとんどのデバッガを使用して元のソース・コードを順番に実行できます。

LINES=NO(デフォルト)のときは、プリコンパイラでは出力ファイルに#lineディレクティブは追加されません。


注意:

Pro*C/C++プリコンパイラでは、#lineディレクティブはサポートされません。これは、プリコンパイラ・ソースでは#lineディレクティブを直接コーディングできないことを意味します。ただし、LINES=オプションを使用すると、プリコンパイラに#lineディレクティブを挿入させることができます。「無視されるディレクティブ」も参照してください。

LNAME

用途

リスト・ファイル名を指定します。

構文

LNAME=filename

デフォルト値

なし

使用上の注意

入力できるのは、コマンドラインのみです。

リスト・ファイルのデフォルトのファイル名の拡張子は.lisです。

LTYPE

用途

生成されるリスト・ファイルの型を指定します。

構文

LTYPE={NONE | SHORT | LONG}

デフォルト値

SHORT

使用上の注意

コマンドラインまたは構成ファイルで入力できます。

リスト・ファイル生成時のデフォルトの形式はLONGです。LTYPE=LONGのとき、すべてのソース・コードが解析順に出力されます。また、メッセージも生成順に出力されます。さらに、現在有効なPro*C/C++オプションが出力されます。

LTYPE=SHORTを指定すると、生成されたメッセージのみが出力され、ソース・コードは出力されません。ソース・ファイルへの参照行はメッセージ状態を生成したコードの位置を特定するのに役立ちます。

LTYPE=NONEのとき、LNAMEオプションでリスト・ファイル名を明示的に指定しないかぎり、リスト・ファイルは作成されません。後者の場合、リスト・ファイルはLTYPE=LONGを想定して作成されます。

MAX_ROW_INSERT

用途

INSERT文の実行前にバッファする必要のある行数を制御します。

構文

max_row_insert={0...1000}

デフォルト値

0

使用上の注意

ゼロより大きい数値によりバッファ挿入機能が有効になり、INSERT文の実行前にその数の行をバッファします。

MAXLITERAL

用途

プリコンパイラによって生成される文字列リテラルの最大長を指定します。これによってコンパイラの制限を超えないようにします。

構文

MAXLITERAL=integer(範囲は10〜1024)

デフォルト値

1024

使用上の注意

インラインでは入力できません。

MAXLITERALに指定できる最大値はコンパイラによって異なります。たとえば、Cコンパイラには513文字以上の文字列リテラルを扱えないものがあるため、そのような場合はMAXLITERAL=512と指定します。

MAXLITERALで指定した長さを超える文字列はプリコンパイル中に分割され、実行時に再び結合(連結)されます。

インラインでMAXLITERALを入力することはできますが、プログラムで値を設定できるのは1回のみで、EXEC ORACLE文を最初のEXEC SQL文の前に指定する必要があります。指定しない場合、Pro*C/C++は警告メッセージを発行し、余分または誤って指定したEXEC ORACLE文を無視して、処理を続行します。

MAXOPENCURSORS

用途

プリコンパイラがキャッシュしたままにする同時オープン・カーソル数を指定します。

構文

MAXOPENCURSORS=integer

デフォルト値

10

使用上の注意

インラインまたはコマンドラインで入力できます。

MAXOPENCURSORSを使用すると、プログラムのパフォーマンスを改善できます。分割プリコンパイル時には、MAXOPENCURSORSを使用します。MAXOPENCURSORSオプションは、SQLLIBカーソル・キャッシュの初期サイズを指定します。

暗黙カーソルを使用する文が実行され、HOLD_CURSOR=NOのとき、あるいは明示カーソルがクローズされたときに、カーソル・エントリには再利用可能のマークが付けられます。この文が再度発行され、このカーソル・エントリが別の文で使用されていない場合は再利用されることになります。

新しいカーソルが必要で、割当て済カーソル数がMAXOPENCURSORSより少ない場合は、キャッシュ内の次のカーソルが割り当てられます。MAXOPENCCURSORSを超えると、Oracleではまず以前のエントリの再利用を試みます。空いているエントリがない場合、追加キャッシュ・エントリが割り当てられます。Oracleは、プログラムがメモリーを消費するか、データベース・パラメータのOPEN_CURSORSを超過するまで継続してこれを行います。

通常の処理で、HOLD_CURSOR=NOとRELEASE_CURSOR=NO(デフォルト)を使用する場合は、MAXOPENCURSORSをデータベース・パラメータのOPEN_CURSORSよりも少なくとも6以上小さい数に設定し、データ・ディクショナリで使用されるカーソルが文を処理できるようにすることをお薦めします。

プログラムの同時オープン・カーソル数を増す必要がある場合には、MAXOPENCURSORSを必要な数まで増やして再度指定することがあります。45〜50の値を指定することは珍しくありませんが、ユーザー・プロセスのメモリー領域にカーソル1つにつきもう1つのプライベートSQL領域が必要となります。デフォルト値の10は、大半のプログラムには適切な値です。

MODE

用途

プログラムがOracleの動作規則に従うかどうか、あるいは現行のANSI/ISO SQL規格に準拠するかどうかを指定します。

構文

MODE={ANSI | ISO | ORACLE}

デフォルト値

ORACLE

使用上の注意

入力できるのは、コマンドラインまたは構成ファイルからのみです。

このオプションでは、ISOはANSIと同じ意味です。

MODE=ORACLE(デフォルト)のとき、埋込みSQLプログラムはOracleの動作規則に従います。たとえば、宣言部はオプションで、空白セルは削除されます。

MODE=ANSIのときは、プログラムは完全にANSI SQL規格に準拠します。この設定変更で次のように処理が変化します。

  • COMMITまたはROLLBACKを発行すると、明示カーソルがすべてクローズされます。

  • すでにオープンされているカーソルのOPENや、クローズされているカーソルのCLOSEはできません。(MODE=ORACLEのときは、再解析を避けるためにオープン状態のカーソルを再度OPENできます。)

  • 各EXEC SQL文のスコープ内にSQLCODEという名前のlong変数またはcharのSQLSTATE[6]変数(どちらの変数も大文字にする必要があります)のいずれかを宣言する必要があります。すべての場合に同一のSQLCODEまたはSQLSTATE変数を使用する必要はありません。つまり、変数はグローバル変数でなくてもかまいません。

  • SQLCAの宣言はオプションです。SQLCAを挿入する必要はありません。

  • SQLCODEに戻される「データが見つかりません」というOracle警告コードは+1403から+100に変わります。メッセージ・テキストは変更されていません。

  • ホスト変数に宣言部が必要です。

NATIVE_TYPES

用途

ネイティブfloatおよびdoubleのサポート。

構文

NATIVE_TYPES = {YES|NO}

デフォルト値

NO

使用上の注意

ネイティブfloatおよびネイティブdoubleデータ型は、単精度と倍精度の浮動小数点値を表します。これらはネイティブに、つまりホスト・システムの浮動小数点形式で表されます。

NLS_CHAR

用途

プリコンパイラでマルチバイト文字変数として扱われるCホスト文字変数を指定します。

構文

NLS_CHAR=varnameまたはNLS_CHAR=(var_1,var_2,...,var_n)

デフォルト値

なし。

使用上の注意

入力できるのは、コマンドラインまたは構成ファイルからのみです。

このオプションを使用すると、プリコンパイラでマルチバイト文字変数として扱う必要がある1つ以上のホスト変数のリストをプリコンパイル時に指定できます。このオプションでは、C言語のchar変数またはPro*C/C++のVARCHAR変数のみを指定できます。

オプション・リストにプログラムで宣言していない変数を指定すると、プリコンパイラはエラーを生成しません。

NLS_LOCAL

用途

プリコンパイラのSQLLIBランタイム・ライブラリとデータベース・サーバーのうち、どちらでマルチバイト・キャラクタ・セット変換を実行するかを指定します。

構文

NLS_LOCAL={YES | NO}

デフォルト値

NO

使用上の注意

YESを指定すると、Pro*C/C++およびSQLLIBライブラリによってローカルのマルチバイト・サポートが提供されます。NLS_CHARオプションを使用して、マルチバイトのCホスト変数を指定する必要があります。

NOを指定すると、Pro*C/C++はデータベース・サーバーのマルチバイト・サポートを使用します。新規アプリケーションはすべてNLS_LOCALをNOに設定してください。

環境変数NLS_NCHARには、有効な固定幅各国語キャラクタ・セットを設定する必要があります。可変幅各国語キャラクタ・セットはサポートされていません。

入力できるのは、コマンドラインまたは構成ファイルからのみです。

OBJECTS

用途

オブジェクト型のサポートを要求します。

構文

OBJECTS={YES | NO}

デフォルト値

YES

使用上の注意

コマンドラインからのみ入力できます。

ONAME

用途

出力ファイル名を指定します。出力ファイルは、プリコンパイラで生成されるCコードのファイルです。

構文

ONAME=path_and_filename

デフォルト値

.c拡張子付きのINAME

使用上の注意

入力できるのは、コマンドラインのみです。このオプションを使用すると、入力(.pc)ファイルとは異なるパス名を使用して、出力ファイルのフルパス名を指定できます。たとえば、次のコマンドを発行する場合を考えます。

proc iname=my_test 

デフォルト出力ファイル名はmy_test.cです。出力ファイル名をmy_test_1.cにする場合は、次のコマンドを発行します。

proc iname=my_test oname=my_test_1.c 

ONAMEで指定するファイルにはデフォルトで拡張子が追加されないため、.cを付加する必要があります。


注意:

出力ファイル名をデフォルトのまま使用するのではなく、ONAMEを使用して明示的に名前を付けることをお薦めします。拡張子なしでONAME値を指定すると、生成ファイルの名前に拡張子は付きません。

ORACA

用途

プログラムでOracle通信領域(ORACA)を使用できるかどうかを指定します。

構文

ORACA={YES | NO}

デフォルト値

NO

使用上の注意

インラインまたはコマンドラインで入力できます。

ORACA=YESのときは、プログラムにEXEC SQL INCLUDE ORACA文または#include oraca.h文を記述する必要があります。

OUTLINE

用途

SQL文のためにアウトラインSQLファイルを生成する必要があることを指定します。

構文

outline={yes | no | category_name}

デフォルト値

無効

使用上の注意

値が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

用途

アウトライン名の生成を制御します。

構文

outlnprefix={none | prefix_name}

デフォルト値

無効

使用上の注意

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(あるいはその両方)の場合、エラーが生成されます。

PAGELEN

用途

リスト・ファイルの物理ページごとの行数を指定します。

構文

PAGELEN=integer

デフォルト値

80

使用上の注意

インラインでは入力できません。値の許容範囲は30〜256です。

PARSE

用途

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

用途

任意の行数を事前に取得して問合せの実行速度を向上させます。

構文

PREFETCH=integer

デフォルト値

1

使用上の注意

構成ファイルまたはコマンドラインで入力できます。優先順位の規則に従い、明示カーソルを使用するすべての問合せの実行に、整数の値が使用されます。

インラインで使用する場合、明示カーソルのあるOPEN文の前に置く必要があります。OPENが実行されるときにプリフェッチされる行数は、最後のインラインの有効なPREFETCHオプションにより指定されます。

値の許容範囲は0〜65535です。

RELEASE_CURSOR

用途

カーソル・キャッシュでのSQL文およびPL/SQLブロック用カーソルの取扱い方法を指定します。

構文

RELEASE_CURSOR={YES | NO}

デフォルト値

NO

使用上の注意

インラインまたはコマンドラインで入力できます。

RELEASE_CURSORを使用すると、プログラムのパフォーマンスを改善できます。

SQL DML文を実行すると、その文に対応付けられたカーソルがカーソル・キャッシュ内のエントリにリンクされます。続いてカーソル・キャッシュ・エントリはOracleプライベートSQL領域にリンクされます。この領域にはSQL文の実行に必要な情報が格納されます。RELEASE_CURSORは、カーソル・キャッシュとプライベートSQL領域の間のリンクで発生する処理を制御します。

RELEASE_CURSOR=YESに指定すると、OracleがSQL文を実行し、カーソルがクローズされた後、プリコンパイラはこのリンクはただちに解除します。これにより、プライベートSQL領域に割り当てられたメモリーが解放され、解析ロックが解除されます。カーソルのCLOSE時に関連リソースを確実に解放するには、RELEASE_CURSOR=YESを指定する必要があります。

RELEASE_CURSOR=NOの場合、リンクは保持されます。オープン・カーソルの数がMAXOPENCURSORSの設定値を超えないかぎり、プリコンパイラではリンクは再利用されません。この設定によって後続の処理の実行速度が向上するため、これは実行頻度の高いSQL文には便利です。文の再解析やOracleプライベートSQL領域用のメモリー割当ては不要です。

暗黙カーソル用としてインラインで使用するときは、SQL文の実行前にRELEASE_CURSORを設定してください。明示カーソル用としてインラインで使用するときは、カーソルをCLOSEする前にRELEASE_CURSORを設定してください。

RELEASE_CURSOR=YESの場合は、HOLD_CURSOR=YESが上書きされます。この2つのオプションの相互作用を示す表は付録C「パフォーマンス・チュニング」を参照してください。

RUNOUTLINE

用途

プリコンパイラを使用するか、後から手動で行うかのいずれかにより、アウトライン作成の文を実行するオプションを開発者に提供します。

構文

runoutline={yes | no}

デフォルト値

無効

使用上の注意

runoutline=yesの場合、生成されたアウトライン作成の文が、正常なプリコンパイルの最後に、プリコンパイラまたはトランスレータによって実行されます。

runoutlineの使用時には、アウトライン・オプションを、trueまたはcategory_nameに設定する必要があります。このオプションをオンにした場合、意味検査は完全に行われます(sqlcheck=full/semantics)。sqlcheck=syntax/limited/noneの場合、エラーが生成されます。

SELECT_ERROR

用途

SELECT文が複数行を戻すとき、あるいはホスト配列の許容範囲を超える数の行を戻すときに、プログラムでエラーが生成されるかどうかを指定します。

構文

SELECT_ERROR={YES | NO}

デフォルト値

YES

使用上の注意

インラインまたはコマンドラインで入力できます。

SELECT_ERROR=YESのときは、行単位のSELECT文が戻した行数が多すぎたり、配列単位のSELECT文が戻した行がホスト配列に入りきらなかったりしたときに、エラーが生成されます。SELECT文の結果は未定義です。

SELECT_ERROR=NOのときは、行単位のSELECT文が戻した行数が多すぎても、配列単位のSELECT文が戻した行がホスト配列に入りきらなくても、エラーは生成されません。

YESを指定してもNOを指定しても、行は表から無作為に選択されます。選択する行の順序を特定するには、SELECT文にORDER BY句を指定する以外に方法はありません。SELECT_ERROR=NOのときORDER BY句を指定すると、配列からの選択時にOracleは先頭行または先頭のn行を戻します。SELECT_ERROR=YESを指定すると、ORDER BY句の有無を問わず、戻る行数が多すぎる場合にエラーが生成されます。

STMT_CACHE

用途

動的SQL文の文キャッシュ・サイズを指定します。

構文

STMT_CACHE = Range is 0 to 65535

デフォルト値

0

使用上の注意

stmt_cacheオプションは、アプリケーションで予想される数の個別の動的SQL文を保持するために設定されます。

SYS_INCLUDE

用途

システム・ヘッダー・ファイルの位置を指定します。

構文

SYS_INCLUDE=pathname | (path1, ..., pathn)

デフォルト値

システム固有

使用上の注意

Pro*C/C++では、プラットフォーム固有の標準的な位置でstdio.hなどの標準のシステム・ヘッダー・ファイルが検索されます。たとえば、ほとんどのUNIXシステムではstdio.hファイルのフルパス名は/usr/include/stdio.hです。

ただし、C++コンパイラには、stdio.hなどのシステム・ヘッダー・ファイルが標準的なシステム位置にないものがあります。SYS_INCLUDEコマンドライン・オプションを使用すると、Pro*C/C++でシステム・ヘッダー・ファイルを検索するためのディレクトリ・パスのリストを指定できます。次に例を示します。

SYS_INCLUDE=(/usr/lang/SC2.0.1/include,/usr/lang/SC2.1.1/include)

SYS_INCLUDEを使用して指定した検索パスは、デフォルトのヘッダー位置より優先されます。

PARSE=NONEの場合、Pro*C/C++はシステム・ヘッダー・ファイルをプリコンパイルに含める必要がないため、SYS_INCLUDEで指定した値は無視されます。(ただし、Oracle特有のヘッダーsqlca.hやシステム・ヘッダー・ファイルなどは、コンパイラによるプリプロセッシングのために#includeディレクティブを付けて、挿入する必要があります。)

プリコンパイラでは、次の順序でディレクトリが検索されます。

  1. カレント・ディレクトリ

  2. SYS_INCLUDEプリコンパイラ・オプションで指定されたシステム・ディレクトリ

  3. INCLUDEオプションで指定されたディレクトリ(入力順)

  4. 標準ヘッダー・ファイル用の組込みディレクトリ

手順3があるため、通常はsqlca.hsqlda.hなどの標準ヘッダー・ファイルのディレクトリ・パスを指定する必要はありません。

SYS_INCLUDEオプションを使用してディレクトリ・パスを指定する構文は、システムによって異なります。各オペレーティング・システムの規則に従ってください。


注意:

SYS_INCLUDEオプションの場合、オプション値の優先順位が逆になります。値が上書きされる他のオプションとは異なり、SYS_INCLUDEは次の場所で指定されたすべてのディレクトリ・ファイルを追加します。
  • プリコンパイラ

  • Pro*C/C++システム構成ファイル

  • Pro*C/C++ユーザー構成ファイル

  • コマンドライン

  • インライン

ただし、カッコ内またはカッコなしでの値の渡し方には違いがあります。カッコ内で単一の値またはディレクトリ・リストを渡す場合、SYS_INCLUDEの既存の値は上書きされます。リストをカッコなしの単純な値として渡す場合、既存の値に追加されます。


THREADS

用途

THREADS=YESのとき、プリコンパイラはコンテキスト宣言を検索します。

構文

THREADS={YES | NO}

デフォルト値

NO

使用上の注意

インラインでは入力できません。

マルチスレッド・サポートを必要とするプログラムには、すべてこのプリコンパイラ・オプションを指定する必要があります。

THREADS=YESの場合、最初のコンテキストが現れ、実行SQL文が検出される前にEXEC SQL CONTEXT USEディレクティブが検出されないと、プリコンパイラはエラーを生成します。

TYPE_CODE

用途

動的SQL方法4でANSIまたはOracleデータ型を使用するかどうかを、マイクロ・オプションで指定します。設定は、MODEオプションの設定と同じです。

構文

TYPE_CODE={ORACLE | ANSI}

デフォルト値

ORACLE

使用上の注意

インラインでは入力できません。

可能なオプション設定については、表14-3を参照してください。

.

UNSAFE_NULL

用途

UNSAFE_NULL=YESを指定すると、標識変数を使用しないでNULLをフェッチしても、ORA-01405メッセージは生成されません。

構文

UNSAFE_NULL={YES | NO}

デフォルト値

NO

使用上の注意

インラインでは入力できません。

MODE=ORACLEのときにかぎり、UNSAFE_NULL=YESを指定できます。

埋込みPL/SQLブロックのホスト変数では、UNSAFE_NULLオプションは何の効果もありません。ORA-01405エラーの発生を避けるには、必ず標識変数を使用してください。

USERID

用途

Oracleユーザー名およびパスワードを指定します。

構文

USERID=username/password[@dbname]

デフォルト値

なし

使用上の注意

入力できるのは、コマンドラインのみです。

自動接続機能を使用している場合は、このオプションを指定しないでください。自動接続機能では、先頭にCLUSTER$の付いたOracleユーザー名しか受け付けません。「CLUSTER$」文字列の実際の値は、INIT.ORAファイルのパラメータとして設定されています。

SQLCHECK=SEMANTICSのとき、Oracleに接続してデータ・ディクショナリにアクセスしてプリコンパイラに必要な情報を取得させるには、USERIDも同時に指定する必要があります。

UTF16_CHARSET

用途

UNICODE(UTF16)変数で使用されるキャラクタ・セットの書式を指定します。

構文

UTF16_CHARSET={NCHAR_CHARSET | DB_CHARSET}

デフォルト値

NCHAR_CHARSET

使用上の注意

入力できるのは、コマンドラインまたは構成ファイルからのみです。インラインでは入力できません。

UTF16_CHARSET=NCHAR_CHARSET(デフォルト)の場合、UNICODE(UTF16)のバインドおよび定義バッファはサーバー側の各国語キャラクタ・セットに従って変換されます。ターゲット列がCHARの場合は、パフォーマンスが低下することがあります。

UTF16_CHAR=DB_CHARSETの場合、UNICODE(UTF16)のバインドおよび定義バッファはデータベースのキャラクタ・セットに従って変換されます。


注意:

ターゲット列がNCHARの場合は、データが失われることがあります。


VARCHAR

用途

ある構造体がVARCHARホスト変数として解釈されるように、Pro*C/C++プリコンパイラに対して指示します。

構文

VARCHAR={NO | YES}

デフォルト値

NO

使用上の注意

入力できるのは、コマンドラインのみです。

VARCHAR=YESのとき、次のようにC言語の構造体を記述します。

struct {
    short len;
    char  arr[n];
} name;

この場合、プリコンパイラによってVARCHAR[n]型のホスト変数として解釈されます。

VARCHARはNLS_CHARオプションとともに使用してマルチバイト文字変数を指定できます。

VERSION

用途

EXEC SQL OBJECT DEREF文によって戻されるオブジェクトのバージョンを指定します。

構文

VERSION={RECENT | LATEST | ANY}

デフォルト値

RECENT

使用上の注意

EXEC ORACLE OPTION文を使用してインライン入力できます。

RECENTは、現行のトランザクション内でオブジェクトがオブジェクト・キャッシュに選択されている場合は、そのオブジェクトが戻されることを意味します。シリアライズ可能モードで実行中のトランザクションの場合、このオプションの動作はLATESTと同じですが、ネットワークのラウンドトリップはそれほど多くありません。ほとんどのアプリケーションは、RECENTが適切です。

LATESTは、オブジェクトがオブジェクト・キャッシュに存在しない場合は、データベースから取り出されることを意味します。オブジェクト・キャッシュに存在する場合は、サーバーからリフレッシュされます。LATESTの場合は、ネットワークのラウンドトリップが最大になるため、慎重に使用してください。LATESTを使用するのは、オブジェクト・キャッシュとサーバー側のバッファ・キャッシュとを可能なかぎり一致させる必要がある場合のみです。

ANYは、オブジェクトがすでにオブジェクト・キャッシュに存在している場合は、そのオブジェクトが戻されることを意味します。キャッシュになければ、そのオブジェクトはサーバーから取り出されます。ANYを指定すると、ネットワークのラウンドトリップは最小になります。この値を使用するのは、アプリケーションが読取り専用オブジェクトにアクセスする場合や、ユーザーがオブジェクトに排他的にアクセスする場合です。