表表
表 3-2 NLSパラメータ(続き)パラメータ(続き)パラメータ(続き)パラメータ(続き)
パラメータ パラメータパラメータ
パラメータ 説明説明説明説明 デフォルトデフォルトデフォルトデフォルト
有効範囲 有効範囲有効範囲 有効範囲:
I = 初期化パラメータ・ファイル初期化パラメータ・ファイル初期化パラメータ・ファイル初期化パラメータ・ファイル E= 環境変数環境変数環境変数環境変数
A = ALTER SESSION
環境変数 環境変数 環境変数
環境変数 NLS_LANG を使用したロケールの選択 を使用したロケールの選択 を使用したロケールの選択 を使用したロケールの選択
ロケール ロケールロケール
ロケールとは、システムやプログラムを実行する言語的および文化的な環境のことです。ロ ケール動作を指定する最も簡単な方法は、NLS_LANG環境パラメータを設定することです。
このパラメータによって、クライアント・アプリケーションで使用される言語と地域が設定 されます。また、クライアントのキャラクタ・セット(クライアント・プログラムによって 入力または表示されるデータのキャラクタ・セット)も設定されます。
NLS_LANGパラメータには、3つのコンポーネント、language、territoryおよびcharsetが あります。このパラメータは、句読点を含めて次の書式で指定します。
NLS_LANG = language_territory.charset
たとえば、OracleのインストーラでNLS_LANGが移入されない場合、その値はAMERICAN_
AMERICA.US7ASCIIとなります。この場合のlanguageはAMERICAN、territoryは AMERICA、charsetはUS7ASCIIです。
NLS_LANGパラメータの各コンポーネントによって、グローバリゼーション・サポート機能 のサブセットの操作が制御されます。
■ language
Oracleのメッセージ、ソート、曜日名および月名に使用する言語などの規則を指定しま
す。各サポート対象言語には、AMERICAN、FRENCHまたはGERMANなどの一意の名前 が付いています。languageの引数によって、territoryおよびcharsetの引数にデフォル ト値が指定されます。 languageを指定しない場合、デフォルト値はAMERICANに設定 されます。
■ territory
デフォルトの日付、通貨単位および数値書式などの規則を指定します。各サポート対象 地域には、AMERICA、FRANCEまたはCANADAなどの一意の名前が付いています。
territoryを指定しない場合、値はlanguageの値から導出されます。
■ charset
クライアント・アプリケーションが使用するキャラクタ・セット(通常はユーザーの端 末で使用するキャラクタ・セット)を指定します。サポート対象の各キャラクタ・セッ トには、US7ASCII、WE8ISO8859P1、WE8DEC、WE8MSWIN1252またはJA16EUCな どの一意の頭字語が付いています。各言語には、その言語に対応したデフォルトのキャ ラクタ・セットがあります。
注意注意注意
注意: NLS_LANG定義のコンポーネントはすべてオプションです。特に 選択しない項目はデフォルト値に設定されます。 territoryまたはcharset を指定する場合は、先行デリミタを付ける必要があります。先行デリミタ
は、territoryの場合はアンダースコア(_)で、charsetの場合はピリオド
(.)です。先行デリミタを付けないと、値は言語名として解析されます。
環境変数NLS_LANGを使用したロケールの選択
NLS_LANGの3つの引数は、次の例のように、様々な組合せで指定できます。
NLS_LANG = AMERICAN_AMERICA.WE8MSWIN1252 NLS_LANG = FRENCH_CANADA.WE8DEC
NLS_LANG = JAPANESE_JAPAN.JA16EUC
非論理的な組合せも設定できますが、正しく動作しません。たとえば、次の指定では、西 ヨーロッパ諸国のキャラクタ・セットを使用して日本語をサポートしようとしています。
NLS_LANG = JAPANESE_JAPAN.WE8DEC
WE8DECキャラクタ・セットでは日本語文字がサポートされないため、この定義をNLS_
LANGに使用すると日本語データを格納できません。
これ以降の内容は、次のとおりです。
■ NLS_LANGの値の指定
■ 言語指定と地域指定のオーバーライド
NLS_LANG の値の指定 の値の指定 の値の指定 の値の指定
NLS_LANGを環境変数として、コマンドラインで設定します。たとえば、UNIXオペレー ティング・システム上では、次のような文を入力して、NLS_LANGの値を指定します。
% setenv NLS_LANG FRENCH_FRANCE.WE8DEC
NLS_LANGは環境変数であるため、クライアント・アプリケーションによって起動時に読み 込まれます。クライアントは、NLS_LANGによって定義された情報を、データベース・サー バーへの接続時にサーバーに送信します。
次の例では、日付および数値の書式がNLS_LANGパラメータによってどのように影響を受け るかを示します。
例 例例
例 3-1 NLS_LANGををををAmerican_America.WE8ISO8859P1に設定する場合に設定する場合に設定する場合に設定する場合
言語がAMERICAN、地域がAMERICA、Oracleキャラクタ・セットがWE8ISO8859P1となる ように、NLS_LANGを設定します。
% setenv NLS_LANG American_America.WE8ISO8859P1 SELECT文を入力します。
SQL> SELECT last_name, hire_date, ROUND(salary/8,2) salary FROM employees;
関連項目関連項目関連項目
関連項目: サポート対象のすべての言語、地域およびキャラクタ・セッ トのリストは、付録A「ロケール・データ」を参照してください。
結果は次のようになります。
LAST_NAME HIRE_DATE SALARY --- --- ---Sciarra 30-SEP-97 962.5 Urman 07-MAR-98 975 Popp 07-DEC-99 862.5 例
例例
例 3-2 NLS_LANGををををFrench_France.WE8ISO8859P1に設定する場合に設定する場合に設定する場合に設定する場合
言語がFRENCH、地域がFRANCE、Oracleキャラクタ・セットがWE8ISO8859P1となるよ うに、NLS_LANGを設定します。
% setenv NLS_LANG French_France.WE8ISO8859P1 例3-1に示した問合せでは、次の出力が戻されます。
LAST_NAME HIRE_DAT SALARY --- --- ---Sciarra 30/09/97 962,5 Urman 07/03/98 975 Popp 07/12/99 862,5
日付書式と数値書式が変更されていることに注意してください。基礎となるデータは同じで あるため、数値に変更はありません。
言語指定と地域指定のオーバーライド 言語指定と地域指定のオーバーライド 言語指定と地域指定のオーバーライド 言語指定と地域指定のオーバーライド
NLS_LANGパラメータは、サーバー・セッション(SQLコマンドの実行など)とクライアン ト・アプリケーション(Oracleのツール製品での書式設定表示など)の両方で使用する言語 と地域の環境を設定します。このパラメータを使用することで、データベースとクライアン ト・アプリケーションの言語環境が自動的に同じになります。
NLS_LANGパラメータのlanguageコンポーネントとterritoryコンポーネントによって、他 の詳細なNLSパラメータ(日付書式、数字および言語ソートなど)のデフォルト値が決定 されます。NLS_LANGパラメータがすでに設定されている場合は、これらの詳細パラメータ をそれぞれクライアント環境で設定してデフォルト値をオーバーライドできます。
NLS_LANGパラメータを設定しない場合、サーバー・セッション環境は、初期化パラメー タ・ファイルのNLS_LANGUAGE、NLS_TERRRITORYおよび他のNLSインスタンスのパラ メータの値によって初期化された状態のままです。これらのパラメータを変更して、インス タンスを再起動すると、デフォルト値を変更できます。
セッション中にNLS環境の動的な変更が必要な場合があります。その場合は、ALTER SESSION文を使用してNLS_LANGUAGE、NLS_TERRITORYおよび他のNLSパラメータを 変更できます。
環境変数NLS_LANGを使用したロケールの選択
ALTERSESSION文が変更するのは、セッション環境のみです。ローカル・クライアントの NLS環境は、クライアントが新しい設定を明示的に取得してローカル環境を変更しないかぎ り、変更されません。
NLS_LANG 設定とデータベース・キャラクタ・セットを一致させる必要が 設定とデータベース・キャラクタ・セットを一致させる必要が 設定とデータベース・キャラクタ・セットを一致させる必要が 設定とデータベース・キャラクタ・セットを一致させる必要が あるかどうか
あるかどうか あるかどうか あるかどうか
NLS_LANGのキャラクタ・セットには、オペレーティング・システムのクライアントの設定 を反映させる必要があります。たとえば、データベース・キャラクタ・セットがUTF8で、
クライアントのオペレーティング・システムがWindowsの場合、UTF8 WIN32クライアン トはないため、クライアント・キャラクタ・セットとしてUTF8を設定しないでください。
かわりに、NLS_LANGの設定にクライアントのコード・ページを反映させる必要がありま す。
UNIXプラットフォーム上では、NLS_LANGはローカルの環境変数として設定されます。
Windowsプラットフォームでは、NLS_LANGはレジストリ内で設定されます。たとえば、英
語版Windowsクライアントでは、コード・ページはWE8MSWIN1252です。 NLS_LANGの
適切な設定は、AMERICAN_AMERICA.WE8MSWIN1252です。
NLS_LANGを適切に設定すると、クライアント・オペレーティング・システムのコード・
ページからデータベース・キャラクタ・セットへと適切に変換できます。これらの設定が同 じときは、送受信されるデータはデータベース・キャラクタ・セットと同一のキャラクタ・
セットでエンコードされているとみなされ、妥当性チェックや変換は実行されません。この ため、クライアントのコード・ページとデータベース・キャラクタ・セットが異なってい て、変換が必要な場合は、データが破損する可能性があります。
注意注意注意
注意: クライアント・キャラクタ・セットの設定は、ALTER SESSION 文では変更できません。
関連項目関連項目関連項目 関連項目:
■ 3-16ページ「セッション中のNLS_LANGUAGEおよびNLS_
TERRITORYのデフォルト値のオーバーライド」
■ 『Oracle9i SQLリファレンス』
関連項目 関連項目関連項目
関連項目: WindowsでNLS_LANGパラメータに一般に使用できる値の
詳細は、『Oracle9i Database for Windows インストレーション・ガイド』
を参照してください。