この項では、OCIロケール関数について説明します。
Oracleロケールは、言語、地域およびキャラクタ・セット定義で構成されます。ロケールは、曜日と月の名前、および日付、時刻、数値、通貨の書式などの表記規則を決定します。グローバライズされたアプリケーションは、ユーザーのロケール設定および文化的規則に従います。たとえば、ロケールをドイツに設定すると、月日の名前がドイツ語で表示されます。
表22-3 OCIロケール関数
| 関数 | 用途 |
|---|---|
|
|
指定されたキャラクタ・セットIDからOracleキャラクタ・セット名を戻します。 |
|
|
指定されたOracleキャラクタ・セット名のOracleキャラクタ・セットIDを戻します。 |
|
OCINlsEnvironmentVariableGet() |
|
|
|
OCI環境またはユーザー・セッション・ハンドルから、宛先バッファによってポイントされた配列に、指定サイズ内でロケール情報をコピーします。 |
|
|
OCI環境ハンドルから出力数値変数に、数値言語情報をコピーします。 |
用途
指定されたキャラクタ・セットIDからOracleキャラクタ・セット名を戻します。
構文
sword OCINlsCharSetIdToName ( void *hndl,
OraText *buf,
size_t buflen
ub2 id );
パラメータ
OCI環境ハンドルまたはセッション・ハンドルです。ハンドルが無効の場合、関数はOCI_INVALID_HANDLEを戻します。
宛先バッファを指します。関数がOCI_SUCCESSを戻す場合、パラメータにはキャラクタ・セット名にNULLで終了する文字列が含まれています。
宛先バッファのサイズです。Oracleキャラクタ・セット名の格納を保証するには、OCI_NLS_MAXBUFSZのサイズをお薦めします。宛先バッファのサイズがキャラクタ・セット名の長さより小さい場合、関数はOCI_ERRORを戻します。
Oracleキャラクタ・セットID
戻り値
OCI_SUCCESS、OCI_INVALID_HANDLEまたはOCI_ERROR
用途
指定されたOracleキャラクタ・セット名のOracleキャラクタ・セットIDを戻します。
構文
ub2 OCINlsCharSetNameToId ( void *hndl,
const OraText *name );
パラメータ
OCI環境ハンドルまたはセッション・ハンドルです。ハンドルが無効の場合、0(ゼロ)が戻されます。
NULLで終了するOracleキャラクタ・セット名へのポインタ。キャラクタ・セット名が無効の場合、0(ゼロ)が戻されます。
戻り値
指定されたキャラクタ・セット名およびOCIハンドルが有効の場合、キャラクタ・セットID。それ以外の場合は、0が戻されます。
用途
NLS_LANGからキャラクタ・セットIDを、またはNLS_NCHARから各国語キャラクタ・セットIDを戻します。
構文
sword OCINlsEnvironmentVariableGet ( void *val,
size_t size,
ub2 item,
ub2 charset,
size_t *rsize );
パラメータ
NLS_LANGキャラクタ・セットIDやNLS_NCHARキャラクタ・セットIDなどのグローバリゼーション・サポート環境変数の値を戻します。
指定の出力値のサイズを指定します。文字列データのみに適用されます。情報の各ピースの最大長は、OCI_NLS_MAXBUFSZバイトです。数値データの場合、この引数は無視されます。
グローバリゼーション・サポート環境変数から取得する値を指定します。次のいずれかの値です。
OCI_NLS_CHARSET_ID: ub2データ型のNLS_LANGキャラクタ・セットID。
OCI_NLS_NCHARSET_ID: ub2データ型のNLS_NCHARキャラクタ・セットID。
取得する文字列データのキャラクタ・セットIDを指定します。0(ゼロ)の場合は、NLS_LANG値が使用されます。OCI_UTF16IDはこの引数に対する有効な値です。数値データの場合、この引数は無視されます。
バイトで示した戻り値の長さです。
コメント
NLS_NCHARが設定されていない場合、各国語キャラクタ・セットIDは、グローバリゼーション・サポート規則に従ってキャラクタ・セットIDと同じになります。NLS_LANGが設定されていない場合は、デフォルトのキャラクタ・セットIDが戻されます。
この関数の今後の機能拡張(他の値を環境変数から取得する)を考慮に入れ、出力valのデータ型は、voidへのポインタになっています。文字列データはNULLで終了しません。
この関数は環境ハンドルを取得しないことに注意してください。したがって、関数が戻すキャラクタ・セットIDおよび各国語キャラクタ・セットIDは、OCI環境ハンドルに保存されている値ではなく、NLS_LANGおよびNLS_NCHARに指定されている値です。OCI環境ハンドルが使用するキャラクタ・セットIDを取得するには、それぞれOCI_ATTR_ENV_CHARSETおよびOCI_ATTR_ENV_NCHARSETのOCIAttrGet()をコールします。
戻り値
OCI_SUCCESSまたはOCI_ERROR。
関連関数
用途
OCI環境またはユーザー・セッション・ハンドルから、宛先バッファによってポイントされた配列に、指定サイズ内でロケール情報を取得します。
構文
sword OCINlsGetInfo ( void *hndl,
OCIError *errhp,
OraText *buf,
size_t buflen,
ub2 item );
パラメータ
オブジェクト・モードで初期化されたOCI環境ハンドルまたはユーザー・セッション・ハンドルです。
OCIエラー・ハンドルです。エラーがある場合は、errhpに記録され、NULLポインタが戻されます。OCIErrorGet()のコールによって診断情報を取得できます。
宛先バッファへのポインタです。戻される文字列はヌル文字で終了します。
宛先バッファのサイズです。情報の各ピースの最大長は、OCI_NLS_MAXBUFSZバイトです。
OCI_NLS_MAXBUFSIZE: OCINlsGetInfo()をコールする際、戻された情報を格納するためにバッファを割り当てる必要があります。バッファ・サイズは、問合せ対象の項目、および情報格納時に使用するエンコーディングによって異なります。開発者は、JA16SJISエンコーディングを使用して日本語でJanuaryを格納するために必要なバイト数を知っている必要はありません。OCINlsGetInfo()によって戻される最大の項目をバッファが格納できるだけの大きさがあることが、OCI_NLS_MAXBUFSZ属性によって保証されます。
OCI環境ハンドル内のどの項目を戻すかを指定します。次のいずれかの値です。
OCI_NLS_DAYNAME1: 月曜日のネイティブの名前OCI_NLS_DAYNAME2: 火曜日のネイティブの名前OCI_NLS_DAYNAME3: 水曜日のネイティブの名前OCI_NLS_DAYNAME4: 木曜日のネイティブの名前OCI_NLS_DAYNAME5: 金曜日のネイティブの名前OCI_NLS_DAYNAME6: 土曜日のネイティブの名前OCI_NLS_DAYNAME7: 日曜日のネイティブの名前OCI_NLS_ABDAYNAME1: 月曜日のネイティブの略称OCI_NLS_ABDAYNAME2: 火曜日のネイティブの略称OCI_NLS_ABDAYNAME3: 水曜日のネイティブの略称OCI_NLS_ABDAYNAME4: 木曜日のネイティブの略称OCI_NLS_ABDAYNAME5: 金曜日のネイティブの略称OCI_NLS_ABDAYNAME6: 土曜日のネイティブの略称OCI_NLS_ABDAYNAME7: 日曜日のネイティブの略称OCI_NLS_MONTHNAME1: 1月のネイティブの名前OCI_NLS_MONTHNAME2: 2月のネイティブの名前OCI_NLS_MONTHNAME3: 3月のネイティブの名前OCI_NLS_MONTHNAME4: 4月のネイティブの名前OCI_NLS_MONTHNAME5: 5月のネイティブの名前OCI_NLS_MONTHNAME6: 6月のネイティブの名前OCI_NLS_MONTHNAME7: 7月のネイティブの名前OCI_NLS_MONTHNAME8: 8月のネイティブの名前OCI_NLS_MONTHNAME9: 9月のネイティブの名前OCI_NLS_MONTHNAME10: 10月のネイティブの名前OCI_NLS_MONTHNAME11: 11月のネイティブの名前OCI_NLS_MONTHNAME12: 12月のネイティブの名前OCI_NLS_ABMONTHNAME1: 1月のネイティブの略称OCI_NLS_ABMONTHNAME2: 2月のネイティブの略称OCI_NLS_ABMONTHNAME3: 3月のネイティブの略称OCI_NLS_ABMONTHNAME4: 4月のネイティブの略称OCI_NLS_ABMONTHNAME5: 5月のネイティブの略称OCI_NLS_ABMONTHNAME6: 6月のネイティブの略称OCI_NLS_ABMONTHNAME7: 7月のネイティブの略称OCI_NLS_ABMONTHNAME8: 8月のネイティブの略称OCI_NLS_ABMONTHNAME9: 9月のネイティブの略称OCI_NLS_ABMONTHNAME10: 10月のネイティブの略称OCI_NLS_ABMONTHNAME11: 11月のネイティブの略称OCI_NLS_ABMONTHNAME12: 12月のネイティブの略称OCI_NLS_YES: 肯定的な応答のネイティブの文字列OCI_NLS_NO: ネイティブの否定的な応答OCI_NLS_AM: AMに相当するネイティブの文字列OCI_NLS_PM: PMに相当するネイティブの文字列OCI_NLS_AD: ADに相当するネイティブの文字列OCI_NLS_BC: BCに相当するネイティブの文字列OCI_NLS_DECIMAL: 小数点文字OCI_NLS_GROUP: グループ・セパレータOCI_NLS_DEBIT: ネイティブの借方記号OCI_NLS_CREDIT: ネイティブの貸方記号OCI_NLS_DATEFORMAT: Oracleの日付書式OCI_NLS_INT_CURRENCY: 国際通貨記号OCI_NLS_DUAL_CURRENCY: 二重通貨記号OCI_NLS_LOC_CURRENCY: 各国通貨記号OCI_NLS_LANGUAGE: 言語名OCI_NLS_ABLANGUAGE: 言語名の略称OCI_NLS_TERRITORY: 地域名OCI_NLS_CHARACTER_SET: キャラクタ・セット名OCI_NLS_LINGUISTIC_NAME: 言語ソート名OCI_NLS_CALENDAR: カレンダ名OCI_NLS_WRITING_DIR: 言語の書込み方向OCI_NLS_ABTERRITORY: 地域の略称OCI_NLS_DDATEFORMAT: Oracleのデフォルト日付書式OCI_NLS_DTIMEFORMAT: Oracleのデフォルト時刻書式OCI_NLS_SFDATEFORMAT: ローカルの日付書式OCI_NLS_SFTIMEFORMAT: ローカルの時刻書式OCI_NLS_NUMGROUPING: 数値のグループ・フィールドOCI_NLS_LISTSEP: リスト・セパレータOCI_NLS_MONDECIMAL: 通貨の小数点文字OCI_NLS_MONGROUP: 通貨のグループ・セパレータOCI_NLS_MONGROUPING: 通貨のグループ・フィールドOCI_NLS_INT_CURRENCYSEP: 国際通貨セパレータ戻り値
OCI_SUCCESS、OCI_INVALID_HANDLEまたはOCI_ERROR
用途
OCI環境ハンドルから数値言語情報を取得し、出力数値変数に格納します。
構文
sword OCINlsNumericInfoGet ( void *hndl,
OCIError *errhp,
sb4 *val,
ub2 item );
パラメータ
OCIエラー・ハンドルです。エラーがある場合は、errhpに記録され、NULLポインタが戻されます。OCIErrorGet()のコールによって診断情報を取得できます。
出力数値変数へのポインタです。関数がOCI_SUCCESSを戻す場合、パラメータには要求されたグローバリゼーション・サポート数値情報が含まれています。
OCI環境ハンドルから取得する項目を指定します。次のいずれかの値です。
OCI_NLS_CHARSET_MAXBYTESZ: OCI環境ハンドルまたはセッション・ハンドルのキャラクタ・セットの最大文字バイト・サイズ。
OCI_NLS_CHARSET_FIXEDWIDTH: 固定幅キャラクタ・セットの場合は文字バイト・サイズ。可変幅キャラクタ・セットの場合は0。
戻り値
OCI_SUCCESS、OCI_INVALID_HANDLEまたはOCI_ERROR