Oracle Database 2日で開発者ガイド 11g リリース1(11.1) E05694-03 |
|
この章では、グローバリゼーション・サポート環境でのアプリケーションの開発方法について説明し、SQLおよびPL/SQL両方を使用してUnicodeプログラミングの使用方法を示します。Unicodeプログラミングによって、複数の言語と互換性のあるSQLおよびPL/SQLコードを記述することができます。
この章の内容は次のとおりです。
Oracle Databaseのグローバリゼーション・サポートにより、各国語でデータを格納、処理、取得できます。さらにデータベース・ユーティリティ、エラー・メッセージ、ソート順序、日付、時刻、通貨、数字、カレンダ規則が、自動的に固有の言語およびロケールに調整されます。
グローバリゼーション・サポートには各国語サポート(NLS)機能が含まれます。各国語サポートは、各国の言語を選択し、データを特定のキャラクタ・セットで格納する機能です。グローバリゼーション・サポートにより、世界のどこからでも同時にアクセスし、実行できる多言語アプリケーションおよびソフトウェア製品を開発できるようになります。アプリケーションにより、ユーザー・インタフェースの内容をレンダリングし、各国語およびユーザーのロケール・プリファレンスでデータを処理できます。
Oracle Databaseの標準機能には次のものが含まれます。
SQL Developerでは各国語サポート・パラメータ・レポートによりグローバリゼーション・サポートのパラメータ値がリストされます。
このレポートのNLSパラメータ値は、「SQL Developer環境におけるNLSパラメータ値の使用」で説明しているように、SQL Developer内のすべてのセッションの最初に使用します。
hr_conn
に設定します。「OK」をクリックします。
NLS_CALENDAR
、NLS_CHARSET
、NLS_COMP
、NLS_CURRENCY
、NLS_DATE_FORMAT
などです。
参照:
V$NLS_PARAMETERS
ビューの詳細は、『Oracle Databaseリファレンス』を参照してください。
Oracleデータベースでは、NLSパラメータ値がデータベース初期化パラメータによって最初に決定されます。DBAは初期化ファイルの値を設定でき、その変更は次のデータベースの設定に影響します。データベース・ユーザーは、次の文を使用することで現在のセッション(データベースへの現在の接続)に対する特定のパラメータ値を変更できます。
ALTER SESSION SET parameter-name = "value";
SQL Developerを使用するときは、データベース初期化ファイルのパラメータ値は使用されないことに注意してください。かわりに、SQL Developerでは次を含むパラメータ値が最初(インストール後)に使用されます。
NLS_LANG,"AMERICAN" NLS_TERR,"AMERICA" NLS_CHAR,"AL32UTF8" NLS_SORT,"BINARY" NLS_CAL,"GREGORIAN" NLS_DATE_LANG,"AMERICAN" NLS_DATE_FORM,"DD-MON-RR"
SQL Developer(すべての接続における「SQL Worksheet」ウィンドウや各国語サポート・パラメータ・レポートなど)のすべてのセッションで使用されるこれらのNLSパラメータ値およびその他のNLSパラメータ値は、NLSパラメータの「Preferences」ペインで表示できます。
NLSパラメータの値を変更するには、次のオプションが必要です。
ALTER SESSION
文を使用することで、現在の接続のみの値を変更します。
このように、データベース・アプリケーション開発時に、異なる言語設定をテストすることに大きな柔軟性を得られます。たとえば、ALTER SESSION
を使用して、異なる言語設定を使用する次のPL/SQL文の出力を表示し、接続を切断し再接続することでSQL Developerのデフォルト設定に戻すことができます。
たとえば、プリファレンスのNLS_LANGUAGE
値がFRENCH
に設定されており、今日が2007年3月1日であると仮定します。「SQL Worksheet」でSELECT sysdate FROM dual;
と入力し、「Run Script」アイコンをクリックすると、次のように出力されます。
SYSDATE ------------------------- 01-MARS -07
ALTER SESSION SET NLS_LANGUAGE='AMERICAN';
と入力し、前述のSELECT
文を入力すると、次のように出力されます。
SYSDATE ------------------------- 01-MAR-07
この例を継続し、現在の接続から切断し、再接続すると、セッションのNLS_LANGUAGE
値は(プリファレンスで指定したとおり)FRENCH
となり、SELECT
文による出力は次のようになります。
SYSDATE ------------------------- 01-MARS -07
NLSパラメータに対するSQL Developerのユーザー・プリファレンスにより、(現在および今後の)すべてのSQL Developer接続で使用される値が設定されます。データベースのNLSパラメータの「Preferences」ペインでパラメータ値を表示し、変更できます。
「現在のNLSパラメータ値の表示」で説明しているように、これらのプリファレンスはNLSパラメータ値レポートでも表示されます。
各テキスト・ラベルは対応するNLS_
xxx
パラメータを説明する用語です。
たとえば、スペイン語環境を反映するようにNLS_LANGUAGE
パラメータ値を変更するには、「Language」でSPANISH
を選択します。
この項では、グローバリゼーション・サポート環境の設定方法を説明します。
ロケールとはシステムやプログラムを実行する言語的および文化的環境のことです。Oracleソフトウェアでロケール動作を指定する最も簡単な方法は、NLS_LANG
パラメータを設定することです。このパラメータによって、クライアント・アプリケーションおよびデータベースで使用される言語と地域が設定されます。また、クライアント・プログラムによって入力または表示されるデータのキャラクタ・セットであるクライアントのキャラクタ・セットも設定されます。
NLS_LANG
パラメータにより、サーバー・セッション(SQL文の処理など)およびクライアント・アプリケーション(Oracleツールの表示の書式など)の両方で使用する言語および地域環境が設定されます。
インストール時に定義したデフォルトのNLS_LANG
動作はほとんどの状況において適切ですが、セッション時に動的にNLS環境を変更することもあります。この場合、ALTER
SESSION
文を使用することで、NLS_LANGUAGE
、NLS_TERRITORY
およびその他のNLSパラメータを変更できます。
ALTER SESSION
文を使用してクライアント・キャラクタ・セットの設定を変更できないことに注意してください。ALTER SESSION
文はセッション環境のみを変更します。クライアントが新しい設定を獲得せず、ローカル環境を変更しない場合、ローカル・クライアントNLS環境は変更されません。
各国語サポート(NLS)パラメータにより、クライアントおよびサーバー両方でのロケール固有の動作が決定します。NLSパラメータは様々な方法で指定できます。SQLファンクションでユーザー・セッションのパラメータを変更し、パラメータを上書きできます。
NLSパラメータの設定は、次の2つの方法で変更できます。
ALTER SESSION
文でNLSパラメータを設定し、初期化パラメータ・ファイルのセッションに対して設定されたデフォルト値、または環境変数を使用してクライアントで設定されたデフォルト値を上書きします。ALTER SESSION SET NLS_SORT = french;
ALTER SESSION
文を使用して行った変更は、現在のユーザー・セッションにのみ適用され、次にログインしたときには変更が適用されません。
ALTER SESSION
文でセッションに対して設定されたデフォルト値を上書きします。たとえば、次を実行します。TO_CHAR(hiredate,'DD/MON/YYYY','nls_date_language = FRENCH')
クライアントでのNLS環境変数の使用を含むNLSパラメータを設定する他の方法は、プラットフォーム依存である場合があります。これは、クライアントに対してロケール依存の動作を指定、または初期化パラメータ・ファイルのセッションのデフォルト値の設定を上書きします。たとえば、Linuxシステムの場合は次のようになります。
% setenv NLS_SORT FRENCH
ローカル地域に応じて異なるNLSパラメータを設定することにより、データベース・セッションにおいて異なる文化的設定を使用できます。たとえば、地域がAMERICA
と定義されている場合であっても、指定したデータベース・セッションに対する基本通貨としてユーロ(EUR
)を設定し、補助通貨として日本の円(JPY
)を設定できます。
参照:
|
NLS_LANGUAGE
パラメータは有効な言語名に対して設定できます。デフォルトはNLS_LANG
設定から導出されます。NLS_LANGUAGE
により、次のセッション特性に対するデフォルトの規則が指定されます。
TO_CHAR
およびTO_DATE
で指定されます)
AM
、PM
、AD
およびBC
に相当する記号
ORDER
BY
句が指定されている場合の文字データのデフォルトのソート順序(ORDER
BY
を指定しないかぎり、GROUP BY
句ではバイナリ・ソート順序が使用されます)
NLS_LANGUAGE
パラメータ値を変更し、その影響を問合せからの結果の表示で確認できます。次の例は、最初にNLS_LANGUAGE
をイタリア語に設定し、次にドイツ語に設定したことを示しています。
「Connections」で、まず「Data Dictionary Reports」を展開し、次に「About Your Database」、そして「National Language Support Parameters」を展開します。「Select Connection」ダイアログ・ボックスで、接続のリストからhr_conn
を選択します。現行の言語はNLS_LANGUAGE
の後にリストされます。
ALTER SESSION SET NLS_LANGUAGE=ITALIAN;
SELECT
文を入力して、イタリア語への変更後の出力書式をチェックします。
SELECT last_name, hire_date, ROUND(salary/8,2) salary FROM employees WHERE employee_id IN (111, 112, 113);
この例では次のように出力されます。月名の略称にイタリア語が使用されていることに注意してください。
LAST_NAME HIRE_DATE SALARY ------------------------- --------- ---------- Sciarra 30-SET-97 962.5 Urman 07-MAR-98 975 Popp 07-DIC-99 862.5
ALTER SESSION SET NLS_LANGUAGE=GERMAN;
SELECT
文を入力して、ドイツ語への変更後の出力書式をチェックします。
SELECT last_name, hire_date, ROUND(salary/8,2) salary FROM employees WHERE employee_id IN (111, 112, 113);
この例では次のように出力されます。月名の略称にドイツ語が使用されていることに注意してください。
LAST_NAME HIRE_DATE SALARY ------------------------- --------- ---------- Sciarra 30-SEP-97 962.5 Urman 07-MRZ-98 975 Popp 07-DEZ-99 862.5
NLS_LANGUAGE
を設定します。次に例を示します。
ALTER SESSION SET NLS_LANGUAGE=AMERICAN;
NLS_TERRITORY
パラメータは有効な任意の地域名に対して設定できます。デフォルトはNLS_LANG
設定から導出されます。NLS_TERRITORY
により、次の日付および数値書式特性に対するデフォルトの規則が指定されます。
NLS_TERRITORY
パラメータを変更することにより、導出されたすべてのNLSセッション・パラメータが新しい地域のデフォルトの値にリセットされます。
NLS_LANGUAGE
パラメータ値を変更し、その影響を問合せからの結果の表示で確認できます。次の例は、NLS_TERRITORY
をドイツに設定した結果を示しています。
SELECT
文を入力します。
SELECT TO_CHAR(salary,'L99G999D99') salary FROM employees WHERE employee_id IN (100, 101, 102);
たとえば、NLS_TERRITORY
がAMERICA
の場合、この例では次のように出力されます。
SALARY -------------------- $24,000.00 $17,000.00 $17,000.00 3 rows selected
「Connections」で、まず「Data Dictionary Reports」、次に「About Your Database」、そして「National Language Support Parameters」を展開します。「Select Connection」ダイアログ・ボックスで、接続のリストからhr_conn
を選択します。現行の地域はNLS_TERRITORY
の後にリストされます。
NLS_TERRITORY
をドイツに設定します。
ALTER SESSION SET NLS_TERRITORY=GERMANY;
SELECT
文を入力して、ドイツへの変更後の出力書式をチェックします。
SELECT TO_CHAR(salary,'L99G999D99') salary FROM employees WHERE employee_id IN (100, 101, 102);
この例では次のように出力されます。3桁区切りがピリオド(.)に変更され、小数点文字がカンマ(,)に変更されました。通貨記号はドル($
)からユーロ()に変更されました。ただし、基礎となるデータは同じであるため、数字は変更されません(つまり、通貨の換算レートは織り込まれません)。
SALARY -------------------- 4.000,00 7.000,00 7.000,00 3 rows selected
NLS_TERRITORY
を設定します。次に例を示します。
ALTER SESSION SET NLS_TERRITORY=AMERICA;
参照:
|
日付および時刻の表示を制御し、ローカル書式に基づいて時刻、曜日、月および年のそれぞれの表記規則を許可できます。たとえば、日付を表示する場合、英国ではDD/MM/YYYY
書式を使用して表示されますが、中国では一般的にYYYY-MM-DD
書式が使用されます。
次の表で説明しているように、日付には複数の異なる書式を使用できます。
国 | 説明 | 例 |
---|---|---|
エストニア |
dd.mm.yyyy |
28.02.2005 |
ドイツ |
dd.mm.rr |
28.02.05 |
中国 |
yyyy-mm-dd |
2005-02-28 |
英国 |
dd/mm/yyyy |
28/02/2005 |
米国 |
mm/dd/yyyy |
02/28/2005 |
NLS_DATE_FORMAT
により、TO_CHAR
およびTO_DATE
ファンクションを使用するためのデフォルトの日付書式が定義されます。NLS_TERRITORY
では、NLS_DATE_FORMAT
パラメータのデフォルト値が決定されます。NLS_DATE_FORMAT
の値は、有効な任意の日付書式モデルです。次に例を示します。
NLS_DATE_FORMAT = "MM/DD/YYYY"
文字列リテラルを日付書式に追加するには、その文字列リテラルを二重引用符で囲みます。日付書式に二重引用符を使用する場合は、値全体を一重引用符で囲む必要があることに注意してください。次に例を示します。
NLS_DATE_FORMAT = '"Date: "MM/DD/YYYY'
Oracleのデフォルトの日付書式が、特定の地域で使用される文化固有の規則に常に対応しているとはかぎりません。'DS'
および'DL'
書式モデルをそれぞれ使用し、SQLで短い日付書式および長い日付書式を使用することにより、ローカライズされた書式で日付を取得できます。次の例は、短い日付書式および長い日付書式の使用例を示しています。
「Connections」で、まず「Data Dictionary Reports」、次に「About Your Database」、そして「National Language Support Parameters」を展開します。「Select Connection」ダイアログ・ボックスで、接続のリストからhr_conn
を選択します。現行の日付書式はNLS_DATE_FORMAT
の後に、現行の地域はNLS_TERRITORY
の後にリストされます。
NLS_TERRITORY
をアメリカに設定します。
ALTER SESSION SET NLS_TERRITORY = America;
SELECT hire_date, TO_CHAR(hire_date,'DS') "Short", TO_CHAR(hire_date,'DL') "Long" FROM employees WHERE employee_id IN (111, 112, 113);
この例では次のように出力されます。
HIRE_DATE Short Long ---------------- ---------- ----------------------------------- 30-SEP-97 9/30/1997 Tuesday, September 30, 1997 07-MAR-98 3/7/1998 Saturday, March 07, 1998 07-DEC-99 12/7/1999 Tuesday, December 07, 1999
NLS_TERRITORY
およびNLS_DATE_FORMAT
を設定します。次に例を示します。
ALTER SESSION SET NLS_TERRITORY=AMERICA; ALTER SESSION SET NLS_DATE_FORMAT="MM/DD/YYYY";
NLS_DATE_LANGUAGE
により、TO_CHAR
およびTO_DATE
ファンクションで生成される曜日名および月名の言語が指定されます。NLS_DATE_LANGUAGE
では、NLS_LANGUAGE
により暗黙的に指定された言語が上書きされます。NLS_DATE_LANGUAGE
パラメータにはNLS_LANGUAGE
パラメータと同じ構文があり、サポートされるすべての言語が有効値です。
NLS_DATE_LANGUAGE
パラメータにより、次に使用される言語も決定されます。
デフォルトの日付書式では、NLS_DATE_LANGUAGE
パラメータによって決定される月名の略称が使用されます。たとえば、デフォルトの日付書式がDD-MON-YYYY
であり、NLS_DATE_LANGUAGE
=
FRENCH
である場合、日付は次のように挿入されます。
INSERT INTO
table_name
VALUES ('12-F騅r.-2007');
次の例は、NLS_DATE_LANGUAGE
をフランス語に設定した結果を示しています。
「Connections」で、まず「Data Dictionary Reports」、次に「About Your Database」、そして「National Language Support Parameters」を展開します。「Select Connection」ダイアログ・ボックスで、接続のリストからhr_conn
を選択します。現行の曜日名および月名の言語はNLS_DATE_LANGUAGE
の後にリストされます。
NLS_DATE_LANGUAGE
をフランス語に設定します。
ALTER SESSION SET NLS_DATE_LANGUAGE = FRENCH;
SELECT TO_CHAR(SYSDATE, 'Day:Dd Month yyyy') FROM DUAL
この例では次のように出力されます。
TO_CHAR(SYSDATE,'DAY:DDMONTHYYYY') ---------------------------------- Lundi :05 Mars 2007
NLS_DATE_LANGUAGE
を設定します。次に例を示します。
ALTER SESSION SET NLS_DATE_LANGUAGE=AMERICAN;
参照:
|
この項では、NLS_TIMESTAMP_FORMAT
およびNLS_TIMESTAMP_TZ_FORMAT
パラメータの使用方法を説明します。時刻書式の例のいくつかは次の表のとおりです。
国 | 説明 | 例 |
---|---|---|
エストニア |
hh24:mi:ss |
13:50:23 |
ドイツ |
hh24:mi:ss |
13:50:23 |
中国 |
hh24:mi:ss |
13:50:23 |
英国 |
hh24:mi:ss |
13:50:23 |
米国 |
hh:mi:ssxff am |
1:50:23.555 PM |
NLS_TIMESTAMP_FORMAT
により、TIMESTAMP
およびTIMESTAMP WITH LOCAL TIME ZONE
データ型のデフォルトの日付書式が定義されます。NLS_TERRITORY
では、NLS_TIMESTAMP_FORMAT
のデフォルト値が決定されます。NLS_TIMESTAMP_FORMAT
の値は有効な任意の日付時間書式モデルです。
次の例はNLS_TIMESTAMP_FORMAT
の値を示しています。
NLS_TIMESTAMP_FORMAT = 'YYYY-MM-DD HH:MI:SS.FF'
NLS_TIMESTAMP_TZ_FORMAT
パラメータにより、TIMESTAMP
およびTIMESTAMP WITH LOCAL TIME ZONE
データ型のデフォルトの日付書式が定義されます。これにはTO_CHAR
およびTO_TIMESTAMP_TZ
ファンクションが使用されます。NLS_TERRITORY
パラメータでは、NLS_TIMESTAMP_TZ_FORMAT
パラメータのデフォルト値が決定されます。NLS_TIMESTAMP_TZ_FORMAT
の値は、有効な任意の日付時間書式モデルです。
書式の値は引用符で囲む必要があります。次に例を示します。
NLS_TIMESTAMP_TZ_FORMAT = 'YYYY-MM-DD HH:MI:SS.FF TZH:TZM'
次の例では、NLS_TIMESTAMP_TZ_FORMAT値が設定されます。また、TO_TIMESTAMP_TZ
ファンクションを使用し、SELECT文で明示的に設定した書式を表しています。
「Connections」で、まず「Data Dictionary Reports」、次に「About Your Database」、そして「National Language Support Parameters」を展開します。「Select Connection」ダイアログ・ボックスで、接続のリストからhr_conn
を選択します。現行の日付書式はNLS_TIMESTAMP_TZ_FORMAT
の後にリストされます。
NLS_TIMESTAMP_TZ_FORMAT
を設定します。
ALTER SESSION SET NLS_TIMESTAMP_TZ_FORMAT = 'YYYY-MM-DD HH:MI:SS.FF TZH:TZM';
NLS_TIMESTAMP_TZ_FORMAT
を設定します。次に例を示します。
ALTER SESSION SET NLS_TIMESTAMP_TZ_FORMAT='DD-MON-RR HH.MI.SSXFF AM TZR';
参照:
|
この項では、カレンダ定義について説明します。
次のカレンダ情報は地域別に格納されます。
週の最初の曜日はNLS_TERRITORY
パラメータにより決定されます。
2005
年1
月1
日は、2004年のISOの週番号53となります。ISOの週は月曜日に始まり、日曜日に終わります。ISO規格をサポートするために、OracleにはIW日付書式要素が用意されています。これによりISOの週番号が戻されます。
年の最初の暦週はNLS_TERRITORY
パラメータにより決定されます。
暦法はNLS_CALENDAR
パラメータで指定します。
世界中で様々な暦法が使用されています。NLS_CALENDAR
によって、Oracle Databaseで使用する暦法が指定されます。デフォルト値はGregorian
です。値は有効な任意のカレンダ書式名です。
NLS_CALENDAR
パラメータには、次の値のいずれかを指定できます。
次の例では、NLS_CALENDARの値をEnglish Hijrahに設定しています。イスラム暦1424年のラマダンの最初の日の値が表示されています。他のNLSパラメータにはSQL Developerのデフォルト設定が反映されます。
「Connections」で、まず「Data Dictionary Reports」、次に「About Your Database」、そして「National Language Support Parameters」を展開します。「Select Connection」ダイアログ・ボックスで、接続のリストからhr_conn
を選択します。現行の日付書式はNLS_DATE_FORMAT
の後に、現行の地域はNLS_CALENDAR
の後にリストされます。
NLS_CALENDAR
をEnglish Hijrahに設定するには、次の手順を実行します。
ALTER SESSION SET NLS_CALENDAR='English Hijrah';
SELECT TO_DATE('01-Ramadan-1428') FROM DUAL;
この例では次のように出力されます。
TO_DATE('01-RAMADAN-1428') ------------------------- 13 September 2007
NLS_CALENDAR
を設定します。次に例を示します。
ALTER SESSION SET NLS_CALENDAR='GREGORIAN';
参照:
|
データベースでは、数字列を正確に解釈するために、各セッションで使用される数値書式設定の規則を認識している必要があります。たとえば、数値の入力時に小数点文字としてピリオドまたはカンマのどちらを使用するか(234.00または234,00)などを認識している必要があります。同じように、アプリケーションでは、数値情報をクライアント側の書式で表示できる必要があります。
次の表に数値書式の例を示します。
国 | 数値書式 |
---|---|
エストニア |
1 234 567,89 |
ドイツ |
1.234.567,89 |
中国 |
1,234,567.89 |
英国 |
1,234,567.89 |
米国 |
1,234,567.89 |
数値書式はNLS_TERRITORY
パラメータの設定から導出されますが、NLS_NUMERIC_CHARACTERS
パラメータで上書きできます。
NLS_NUMERIC_CHARACTERS
により、グループ・セパレータおよび小数点記号が指定されます。グループ・セパレータとは、千や100万などを示すために整数グループを区切る文字です。この文字はG
数値書式モデルで戻されます。小数点記号は、数値の整数部と小数部を区切ります。NLS_NUMERIC_CHARACTERS
を設定すると、NLS_TERRITORY
の設定から導出されるデフォルト値が上書きされます。値は、グループ・セパレータおよび小数点記号に指定できる2つの任意の数字です。
任意の文字を小数点文字またはグループ・セパレータに指定できます。2つの文字はシングルバイトであり、お互いに異なる文字である必要があります。これらの文字に、数字、プラス記号(+)、マイナス記号(-)、小なり記号(<)、大なり記号(>)を使用することはできません。どちらかの文字を空白にすることができます。
小数点文字としてカンマを設定し、グループ・セパレータとしてピリオドを設定するには、NLS_NUMERIC_CHARACTERS
パラメータを次のように指定します。
ALTER SESSION SET NLS_NUMERIC_CHARACTERS = ",.";
SQL文には、数値リテラルまたはテキスト・リテラルを表す数値を含むことができます。数値リテラルは引用符で囲みません。数値リテラルはSQL言語構文の一部で、小数点文字として常にドットを使用し、グループ・セパレータは含まれません。テキスト・リテラルは引用符で囲みます。テキスト・リテラルは、必要に応じて、現行のNLS設定に従って、暗黙的または明示的に数値に変換されます。
次の例では、ALTER SESSION
文で指定された小数点文字とグループ・セパレータを使用して数値4000の書式を設定しています。
「Connections」で、まず「Data Dictionary Reports」、次に「About Your Database」、そして「National Language Support Parameters」を展開します。「Select Connection」ダイアログ・ボックスで、接続のリストからhr_conn
を選択します。現行の数値書式はNLS_NUMERIC_CHARACTERS
の後にリストされます。
NLS_NUMERIC_CHARACTERS
を指定したグループ・セパレータおよび小数点文字に設定します。
ALTER SESSION SET NLS_NUMERIC_CHARACTERS = ",.";
二重引用符を使用します。
'
9G999D99'
を使用して4000を表示します。
SELECT TO_CHAR(4000, '9G999D99') FROM DUAL;
この例では次のように出力されます。グループ・セパレータはピリオド(.)で、小数点文字はカンマ(,)です。
TO_CHAR(4000,'9G999D99') ------------------------ 4.000,00
NLS_NUMERIC_CHARACTERS
を設定します。次に例を示します。
ALTER SESSION SET NLS_NUMERIC_CHARACTERS=". ";
基数記号と3桁区切りは、ロケールで定義できます。たとえば、小数点は、米国ではピリオド(.)ですが、フランスではカンマ(,)です。金額$1,234の持つ意味は国によって異なるため、金額をロケールごとに適切に表示することが重要です。
世界中で様々な通貨書式が使用されています。標準的な書式の一部を次の表に示します。
国 | 通貨書式 |
---|---|
エストニア |
1 234,56 kr |
ドイツ |
1.234,56 |
中国 |
¥1,234.56 |
英国 |
£1,234.56 |
米国 |
$1,234.56 |
参照:
|
NLS_CURRENCY
パラメータでは、L
数値書式モデルで戻される文字列の各国通貨記号を指定します。NLS_CURRENCY
を設定すると、NLS_TERRITORY
で暗黙的に定義された設定が上書きされます。値には、有効な任意の通貨記号を指定できます。
次の例では、NLS_CURRENCY値によって置換されるL
数値書式モデルを含む書式を使用して給与合計を表示しています。
SELECT TO_CHAR(salary, 'L099G999D99') "salary" FROM employees WHERE salary > 11000
この例では次のように出力されます。この場合、ドル記号($)がL
数値書式モデルです。
salary --------------------- $024,000.00 $017,000.00 $017,000.00 $012,000.00 $014,000.00 $013,500.00 $012,000.00 $011,500.00 $013,000.00 $012,000.00 10 rows selected
参照:
|
NLS_ISO_CURRENCY
パラメータでは、C
数値書式モデルで戻される文字列の各国通貨記号を指定します。NLS_ISO_CURRENCY
を設定すると、NLS_TERRITORY
で暗黙的に定義された値が上書きされます。値には、有効な任意の文字列を指定できます。
各国通貨記号は不明確な場合があります。たとえば、ドル記号($)は米国ドルを指すこともオーストラリア・ドルを指すこともあります。ISO仕様には、特定の地域または国に対して固有の通貨記号が定義されています。たとえば、米国ドルに対するISO通貨記号はUSDです。オーストラリア・ドルに対するISO通貨記号はAUDです。
NLS_ISO_CURRENCY
パラメータの構文はNLS_TERRITORY
パラメータの構文と同じで、サポート対象地域すべてが有効値です。
次の例では、適切な書式モデルを使用してフランス用のISO通貨記号および給与書式を設定しています。
「Connections」で、まず「Data Dictionary Reports」、次に「About Your Database」、そして「National Language Support Parameters」を展開します。「Select Connection」ダイアログ・ボックスで、接続のリストからhr_conn
を選択します。現行のISO通貨書式はNLS_ISO_CURRENCY
の後にリストされます。
NLS_ISO_CURRENCY
をフランスに設定します。
ALTER SESSION SET NLS_ISO_CURRENCY=FRANCE;
SELECT TO_CHAR(salary, 'C099G999D99') "Salary" FROM employees WHERE department_id = 60;
この例では次のように出力されます。
Salary ------------------ EUR009,000.00 EUR006,000.00 EUR004,800.00 EUR004,800.00 EUR004,200.00 5 rows selected
NLS_ISO_CURRENCY
を設定します。次に例を示します。
ALTER SESSION SET NLS_ISO_CURRENCY=AMERICA;
参照:
|
NLS_DUAL_CURRENCY
を使用すると、NLS_TERRITORY
で暗黙的に定義されたデフォルトの二重通貨記号が上書きされます。値には有効な任意の記号を指定できます。
NLS_DUAL_CURRENCY
はユーロ移行期間中にユーロ通貨記号をサポートするために導入されました。
参照:
|
ソート順序は言語によって異なります。ある言語ではアルファベットの文字の並びに応じてソートされ、ある言語では文字の画数でソートされ、またある言語では語の発音によってソートされます。また、文字のアクセントの扱いも言語によって異なります。たとえば、デンマーク語の文字Æは、Zの後に来ます。また、YとÜは同じ文字の変形とみなされます。
言語ソート・パラメータを使用することで、データのソート方法を定義できます。基本的な言語定義では、文字列を独立した文字の連続として扱います。
NLS_SORT
パラメータにより、ORDER
BY
問合せの照合順序(言語ソート)が指定されます。これにより、NLS_LANGUAGE
パラメータから導出されたデフォルトのNLS_SORT
値は上書きされます。NLS_SORT
の値はBINARY
、または有効な任意の言語ソート名です。
NLS_SORT
=
BINARY
|
sort_name
値がBINARY
である場合、照合順序は基礎となるコード体系の数値コードに基づきます。データ型に応じて、これはデータベース・キャラクタ・セットまたは各国語キャラクタ・セットのバイナリ・ソート順序のいずれかです。値が言語ソートの名前である場合、ソートは定義したソートの順序に基づきます。NLS_LANGUAGE
パラメータによってサポートされるほとんどの(すべてではありません)言語は同じ名前の言語ソートをサポートします。
NLS_SORT
パラメータ値を変更し、その結果を問合せの結果の表示で確認できます。次の例ではNLS_SORT
を最初にバイナリに設定して、次にスペイン語(SPANISH_M
)に設定した結果を示しています。スペインでは伝統的にch、ll、ñを独自の文字として扱い、それぞれc、l、nの次に来ます。
「Connections」で、まず「Data Dictionary Reports」、次に「About Your Database」、そして「National Language Support Parameters」を展開します。「Select Connection」ダイアログ・ボックスで、接続のリストからhr_conn
を選択します。現行の照合書式はNLS_SORT
の後にリストされます。
NLS_SORT
をバイナリに設定します。
ALTER SESSION SET NLS_SORT=BINARY;
ORDER BY
句のあるSELECT
文を入力し、変更後の出力を確認します。
SELECT last_name FROM employees WHERE last_name LIKE 'C%' ORDER BY last_name;
この例では次のように出力されます。
LAST_NAME ------------------------- Cabrio Cambrault Cambrault Chen Chung Colmenares 6 rows selected
NLS_SORT
をSPANISH_M
に設定します。
ALTER SESSION SET NLS_SORT=spanish_m;
SELECT
文を入力し、変更後の出力を確認します。
SELECT last_name FROM employees WHERE last_name LIKE 'C%' ORDER BY last_name;
この例では次のように出力されます。Colmenaresは現在Chenの前に来ます。
LAST_NAME ------------------------- Cabrio Cambrault Cambrault Colmenares Chen Chung 6 rows selected
NLS_SORT
を設定します。次に例を示します。
ALTER SESSION SET NLS_SORT=BINARY;
参照:
|
比較演算子を使用するとき、文字は指定したコード体系のバイナリ・コードにより、比較されます。バイナリ・コードより高い場合、文字は他よりも大きくなります。バイナリでの言語順序は特定の言語の言語順序と一致しない場合があるため、このような比較が言語的に正確ではない可能性があります。
NLS_COMP
パラメータの値はSQL操作の比較動作に影響します。値にはBINARY
(デフォルト)またはLINGUISTIC
を指定できます。バイナリ比較ではなく言語比較を実行する場合は、NLS_COMP
パラメータを使用することで、SQL文のNLSSORT
ファンクションを使用する面倒な処理を回避できます。NLS_COMP
をLINGUISTIC
に設定すると、SQLによりNLS_SORT
パラメータの値に基づいた言語比較が実行されます。
NLS_COMP
パラメータ値を変更し、その結果を問合せ結果を表示することで確認できます。次の例では、従業員名に対しバイナリ比較を実行した後にスペイン語の言語比較を実行したことを示しています。
「Connections」で、まず「Data Dictionary Reports」、次に「About Your Database」、そして「National Language Support Parameters」を展開します。「Select Connection」ダイアログ・ボックスで、接続のリストからhr_conn
を選択します。現行の比較演算子書式はNLS_COMP
の後にリストされます。
NLS_SORT
をスペイン語に設定し、NLS_COMP
をBINARY
に設定します。
ALTER SESSION SET NLS_SORT=spanish_m NLS_COMP=binary;
C
で始まる従業員を戻すSELECT
文を入力します。
SELECT last_name FROM employees WHERE last_name LIKE 'C%';
この例では次のように出力されます。
LAST_NAME ------------------------- Cabrio Cambrault Cambrault Chen Chung Colmenares 6 rows selected
NLS_COMP
をLINGUISTIC
に設定します。
ALTER SESSION SET NLS_COMP=linguistic;
SELECT
文を入力し、変更後の出力を確認します。
SELECT last_name FROM employees WHERE last_name LIKE 'C%';
この例では次のように出力されます。2つの行、ChenおよびChungは戻されません。これは、スペイン語ではch
はc
の後に続く別の文字として扱われ、ch
は、スペイン語の言語比較が実行されたときに除外されるためです。
LAST_NAME ------------------------- Cabrio Cambrault Cambrault Colmenares 4 rows selected
NLS_COMP
を設定します。次に例を示します。
ALTER SESSION SET NLS_COMP=BINARY;
参照:
|
データベースの操作では、大/小文字および文字のアクセントが区別されます。場合によっては、大/小文字を区別しない、またはアクセントを区別しない比較を実行する必要があります。大/小文字を区別しない、またはアクセントを区別しないソートを指定するには、NLS_SORT
セッション・パラメータを使用します。
大/小文字を区別しない、またはアクセントを区別しないソートを指定するには、次の手順を実行します。
_CI
を付けます。次に例を示します。
_AI
を付けます。次に例を示します。
シングルバイト・キャラクタ・セットの場合、文字列のバイト数と文字数は同じです。マルチバイト・キャラクタ・セットの場合は、1文字または1つのコード・ポイントが1つ以上のバイトで構成されています。可変幅キャラクタ・セットの場合は、バイト長に基づく文字数の計算が困難な場合があります。列の長さをバイト数単位で計算することをバイト・セマンティクス、文字数単位で計算することをキャラクタ・セマンティクスと呼びます。
キャラクタ・セマンティクスは、可変幅のマルチバイト文字列の記憶要件を定義する場合に役立ちます。たとえば、Unicodeデータベース(AL32UTF8)で、VARCHAR2
列を英語の5文字とともに5文字の中国語文字を格納できるように定義する必要があるとします。バイト・セマンティクスを使用すると、この列には、長さ3バイトである中国語文字用に15バイトと、長さ1バイトである英語文字用に5バイト、合計20バイトが必要です。キャラクタ・セマンティクスを使用すると、この列に必要な文字数は10となります。
次の式ではバイト・セマンティクスが使用されています。VARCHAR2
式のBYTE
修飾子およびSQLファンクション名のB
接尾辞に注意してください。
次の式ではキャラクタ・セマンティクスが使用されています。VARCHAR2
式のCHAR
修飾子に注意してください。
NLS_LENGTH_SEMANTICS
パラメータによって、BYTE
(デフォルト)またはCHAR
セマンティクスが指定されます。デフォルトでは、文字データ型CHAR
およびVARCHAR2
が、文字単位ではなくバイト単位で指定されます。このため、表定義でCHAR(20)
と指定すると、文字データを格納するために20バイトが割り当てられます。
NLS_LENGTH_SEMANTICS
によって、CHAR
、VARCHAR2
およびLONG
の各列をバイト・セマンティクスまたはキャラクタ・セマンティクスのいずれかを使用して作成できます。NCHAR
、NVARCHAR2
、CLOB
およびNCLOB
の各列は、常に文字ベースです。既存の列は影響を受けません。
「Connections」で、まず「Data Dictionary Reports」、次に「About Your Database」、そして「National Language Support Parameters」を展開します。「Select Connection」ダイアログ・ボックスで、接続のリストからhr_conn
を選択します。現行のセマンティクス書式はNLS_LENGTH_SEMANTICS
の後にリストされます。
NLS_LENGTH_SEMANTICS
をBYTE
に設定します。
ALTER SESSION SET NLS_LENGTH_SEMANTICS=BYTE;
CREATE TABLE SEMANTICS_BYTE(SOME_DATA VARCHAR2(20));
SEMANTICS_BYTE
のデータ型をチェックします。「Connections」タブを選択しhr_conn
接続を展開して、「Tables」にすべての表を表示します。SEMANTICS_BYTE
表を選択します。SOME_DATA
列のデータ型は、VARCHAR2(20 BYTE)
としてリストされます。
NLS_LENGTH_SEMANTICS
をCHAR
に設定します。
ALTER SESSION SET NLS_LENGTH_SEMANTICS=CHAR;
CREATE TABLE SEMANTICS_CHAR(SOME_DATA VARCHAR2(20));
SEMANTICS_CHAR
のデータ型をチェックします。「Connections」タブを選択しhr_conn
接続を展開して、「Tables」にすべての表を表示します。SEMANTICS_CHAR
表を選択します。SOME_DATA
列のデータ型は、VARCHAR2(20 CHAR)
としてリストされます。
SEMANTICS_BYTE
およびSEMANTICS_CHAR
表を削除します。「Tables」ナビゲーション階層で、各表の名称を右クリックして、メニューから「Table」を選択してから「Drop」を選択します。「Apply」をクリックしてから「Confirmation」ダイアログ・ボックスで「OK」をクリックします。
NLS_LENGTH_SEMANTICS
を設定します。次に例を示します。
ALTER SESSION SET NLS_LENGTH_SEMANTICS=BYTE;
この項では、複数の言語アプリケーション用にデプロイできるSQLおよびPL/SQLのUnicode関連の機能を説明します。Unicodeデータは挿入および取得できます。データはデータベースおよびクライアント間で透過的に変換され、クライアント・プログラムがデータベース・キャラクタ・セットおよび各国キャラクタ・セットから独立していることを保証します。
Unicodeとはエンコードされたユニバーサル・キャラクタ・セットです。このセットを使用すると、1つのキャラクタ・セットを使用して任意の言語の情報を格納できます。Unicodeには、プラットフォーム、プログラムまたは言語に関係なく、すべての文字に対する一意のコード値が用意されています。
Unicodeには次のような利点があります。
Unicode文字は、Oracleデータベースにおいて次の2つの方法で格納できます。
CHAR
データ型として格納できるように、Unicodeデータベースを作成できます。
NCHAR
データ型の列にUnicode文字を格納できます。NCHAR
データ型はUnicodeデータ型専用です。
参照:
SQL NCHAR
データ型にはNCHAR
およびNVARCHAR2
という2つのデータ型があります。
SQL Developerでは、各列のタイプに適切な値を選択することにより、表を作成または編集するダイアログ・ボックスでこれらのデータ型を指定できます。また、「SQL Worksheet」を使用し、CREATE TABLE
文を入力することで、各列名およびデータ型を指定できます。
参照:
|
NCHAR
データ型として表の列またはPL/SQL変数を定義するとき、長さは文字数として指定されます。たとえば、次の文により最大文字長が30の列が1つ作成されます。
CREATE TABLE table1 (column1 NCHAR(30));
列の最大バイト数は、最大文字数と各文字の最大バイト数の積です。
たとえば、各国語キャラクタ・セットがUTF8の場合、最大バイト長は30文字に1文字当たり3バイトを乗算した値、つまり90バイトとなります。
すべてのNCHAR
データ型に使用する各国語キャラクタ・セットは、データベースの作成時に定義します。各国語キャラクタ・セットはUTF8またはAL16UTF16のいずれかです。デフォルトはAL16UTF16です。
使用可能な最大列サイズは、各国語キャラクタ・セットがUTF8の場合は2000文字、AL16UTF16の場合は1000文字です。実際のデータが最大バイト制限の2000の対象となります。2つのサイズ制限は同時に満たす必要があります。PL/SQLでは、NCHAR
データの最大長は32767バイトです。NCHAR
変数は32767文字まで定義できますが、実際のデータは32767バイトを超えることはできません。列の長さより短い値を挿入すると、最大文字長と最大バイト長のいずれか小さい方の値まで空白で埋められます。
NVARCHAR2
データ型は、各国語キャラクタ・セットを使用する可変長文字列を指定します。NVARCHAR2
列を使用して表を作成するときは、列の最大文字数を指定します。NVARCHAR2
の長さは、NCHAR
の場合と同様に文字単位です。Oracle Databaseでは値が列の最大長を超えないかぎり、ユーザーが指定したとおりに各値が列内に格納されます。文字列の値が最大長まで埋め込まれることはありません。
使用可能な最大列サイズは、各国語キャラクタ・セットがUTF8の場合は4000文字、AL16UTF16の場合は2000文字です。バイト単位では、NVARCHAR2
列の最大長は4000バイトです。バイト数の上限と文字数の上限の両方を満たす必要があるため、実際にNVARCHAR2
列に使用できる最大文字数は、4000バイトに書込み可能な文字数となります。
PL/SQLでは、NVARCHAR2
変数の最大長は32767バイトです。NVARCHAR2
変数は32767文字まで定義できますが、実際のデータは32767バイトを超えることはできません。
次の文により、最大文字長が2000で最大バイト長が4000のNVARCHAR2
列を1つ含む表が作成されます。
CREATE TABLE table2 (column2 NVARCHAR2(2000));
Unicode文字列リテラルは、次の方法でSQLおよびPL/SQLに入力できます。
N
を付加します。この接頭辞によって、その後に続く文字列リテラルがNCHAR
文字列リテラルであることが明示的に示されます。たとえば、N'r
ésum
é'
はNCHAR
文字列リテラルです。この方法に関する制限は、「NCHARリテラルの置換」を参照してください。
NCHR(
n
)
SQLファンクションを使用します。NCHR(
n
)
SQLファンクションは、各国語キャラクタ・セット(AL16UTF16またはUTF8)内の文字コードの数を戻します。複数のNCHR
n
)
ファンクションを連結した結果は、NVARCHAR2
データになります。このように、クライアントとサーバーのキャラクタ・セット変換を行わずに、NVARCHAR2
文字列を直接作成できます。たとえば、NCHR(32)
は空白文字を表します。NCHR(
n
)
は各国語キャラクタ・セットに関連付けられているため、結果値の移植性はその各国語キャラクタ・セットで実行されるアプリケーションに限定されます。この移植性が重要な場合は、UNISTR
ファンクションを使用して移植性の制限を解除します。
UNISTR('
string'
)
SQLファンクションを使用します。UNISTR
('string'
)
ファンクションは、文字列を各国語キャラクタ・セットに変換します。移植性を確保してデータを保持するには、ASCII文字とUnicodeエンコーディングのみを¥xxxx
形式で含めます。xxxx
は、UTF-16エンコーディング形式で文字コード値を表す16進値です。たとえば、UNISTR('G¥0061ry')
は'Gary'
を表します。ASCII文字は、データベース・キャラクタ・セットに変換されてから、各国語キャラクタ・セットに変換されます。Unicodeエンコーディングは、各国語キャラクタ・セットに直接変換されます。
最後の2つの方法を使用すると、すべてのUnicode文字列リテラルをエンコードできます。
参照:
|
SQLまたはPL/SQL文の一部として、接頭辞N
あり、またはなしの任意のリテラルのテキストが文の残りに同じ文字で囲まれます。クライアント側では、文はクライアント・キャラクタ・セットで、NLS_LANG
パラメータによって定義されたキャラクタ・セットで決定されます。サーバー側では、文はデータベース・キャラクタ・セットです。
SQLまたはPL/SQL文がクライアントからデータベースに送信されると、キャラクタ・セットはそれに応じて変換されます。データベース・キャラクタ・セットにテキスト・リテラルで使用されるすべての文字が含まれない場合、データはこの変換で消失します。これはCHAR
テキスト・リテラルよりもNCHAR
文字列リテラルに大きく影響します。これはN'
リテラルがデータベース・キャラクタ・セットから独立するように設計されており、クライアント・キャラクタ・セットで許可されるすべてのデータを含むことができるためです。
互換性のないデータベース・キャラクタ・セットへの変換時のデータ消失を回避するために、クライアント環境変数ORA_NCHAR_LITERAL_REPLACE
をTRUE
に設定してNCHAR
リテラル置換を使用できます。これによりクライアント側のN
リテラルを、文の実行時にUnicodeにデコードされる内部書式で置換できるようになります。デフォルトでは、下位互換性を維持するためにNCHAR
リテラル置換は無効です。
参照:
|
動作をグローバリゼーション・サポートの規則に依存しているすべてのSQLファンクションで、NLSパラメータを指定できます。これらのファンクションは、TO_CHAR
、TO_DATE
、TO_NUMBER
、NLS_UPPER
、NLS_LOWER
、NLS_INITCAP
およびNLSSORT
です。
これらのファンクションのNLSパラメータを指定すると、セッションのNLSパラメータに依存せずにファンクションを評価できます。この機能は、数字や日付が文字列リテラルとして含まれているSQL文で重要となる場合があります。
たとえば、日付に対する言語がAMERICAN
であることを評価するには、次の2つの問合せがあります。
ALTER SESSION
を使用してNLS_DATE_LANGUAGE
パラメータおよびNLS_CALENDAR
パラメータを設定します。
ALTER SESSION SET NLS_DATE_LANGUAGE=American; SELECT last_name FROM employees WHERE hire_date > '01-JAN-1999';
WHERE
句、TO_DATE
ファンクションでNLS_DATE_LANGUAGE
パラメータを指定します。
SELECT last_name FROM employees WHERE hire_date > TO_DATE('01-JAN-1999','DD-MON-YYYY', 'NLS_DATE_LANGUAGE = AMERICAN');
このようにセッション言語に依存しないSQL文を必要に応じて定義できます。これらの文は、文字列リテラルをビュー内のSQL文、CHECK
制約、またはトリガーで表示するときに必要となります。
ロケール依存のSQLファンクションでオプションのNLSパラメータを明示的に指定する必要があるのは、セッションのNLSパラメータ値に依存しないことが必要となるSQL文のみです。通常、SQLファンクションでNLSパラメータにセッションのデフォルト値を使用すると、パフォーマンスが改善されます。
すべての文字ファンクションは、シングルバイトとマルチバイトの両方の文字をサポートします。単位を明示的に示した場合を除いて、文字ファンクションはバイト単位ではなく文字単位で動作します。
SQLファンクションでビューやトリガーが評価される場合、NLSファンクションパラメータには現行のセッションからのデフォルト値が使用されます。SQLファンクションでCHECK
制約が評価される場合は、データベースの作成時にNLSパラメータに指定されたデフォルト値が使用されます。
NLSパラメータはSQLファンクションでパラメータ = 値のように指定します。次に例を示します。
'NLS_DATE_LANGUAGE = AMERICAN'
SQLファンクションで次のNLSパラメータを指定できます。
NLS_DATE_LANGUAGE NLS_NUMERIC_CHARACTERS NLS_CURRENCY NLS_ISO_CURRENCY NLS_DUAL_CURRENCY NLS_CALENDAR NLS_SORT
一部の言語では、1つの小文字が複数の大文字に対応したり、1つの大文字が複数の小文字に対応します。したがって、NLS_UPPER
、NLS_LOWER
およびNLS_INITCAP
ファンクションの出力の長さは入力の長さと異なることがあります。次の表で、特定のSQLファンクションに対し、どのNLSパラメータが有効であるかを示します。
例6-1は、SQLファンクションでNLSパラメータを使用する方法を示すSELECT
文を示しています。これらのSELECT
文を実行した後(SQLワークショップでグループとして実行可能)、「Script Output」ペインにおける各文の出力を確認します(多くの文の出力は非常に長いです)。
SELECT TO_DATE('1-JAN-99', 'DD-MON-YY', 'NLS_DATE_LANGUAGE = American') "01/01/99" FROM DUAL; SELECT TO_CHAR(hire_date, 'DD/MON/YYYY', 'NLS_DATE_LANGUAGE = French') "Hire Date" FROM employees; SELECT TO_CHAR(SYSDATE, 'DD/MON/YYYY', 'NLS_DATE_LANGUAGE = ''Traditional Chinese'' ') "System Date" FROM DUAL; SELECT TO_CHAR(13000, '99G999D99', 'NLS_NUMERIC_CHARACTERS = '',.''') "13K" FROM DUAL; SELECT TO_CHAR(salary, '99G999D99L', 'NLS_NUMERIC_CHARACTERS = '',.'' NLS_CURRENCY = ''EUR''') salary FROM employees; SELECT TO_CHAR(salary, '99G999D99C', 'NLS_NUMERIC_CHARACTERS = ''.,'' NLS_ISO_CURRENCY = Japan') salary FROM employees; SELECT NLS_UPPER(last_name, 'NLS_SORT = Swiss') "Last Name" FROM employees; SELECT last_name FROM employees ORDER BY NLSSORT(last_name, 'NLS_SORT = German');
参照:
|
NLSパラメータNLS_LANGUAGE
、NLS_TERRITORY
およびNLS_DATE_FORMAT
はNLSSORT
以外のSQLファンクションでは使用できません。
NLS_LANGUAGE
は、NLS_DATE_LANGUAGE
のセッションの値を妨げます。たとえばTO_CHAR
ファンクションでNLS_LANGUAGE
を指定すると、そのセッションのNLS_DATE_LANGUAGE
パラメータ値と異なる場合は、Oracle Databaseから無視されます。
NLS_DATE_FORMAT
パラメータおよびNLS_TERRITORY_FORMAT
パラメータは必要な書式モデルを妨げる可能性があるので、パラメータとしては受け入れられません。TO_CHAR
ファンクションまたはTO_DATE
ファンクションでNLSパラメータを使用する場合は、日付書式を指定する必要があります。したがってNLS_DATE_FORMAT
パラメータおよびNLS_TERRITORY_FORMAT
パラメータはこれらの変換ファンクションには有効ではありません。TO_CHAR
ファンクションまたはTO_DATE
ファンクションでNLS_DATE_FORMAT
またはNLS_TERRITORY_FORMAT
を指定すると、Oracle Databaseはエラーを返します。
参照:
|
|
![]() Copyright © 2005, 2008, Oracle Corporation. All Rights Reserved. |
|