JavaScriptが無効になっています。
この状態では一部の情報が表示されず、すべての機能を利用することができません。
NLS 関連初期化パラメータ(NLS 環境変数)
NLS_〜 パラメータは各国語サポート用のパラメータで、DATABASE、INSTANCE、SESSION と 3 段階があり、その値には列挙タイプのパラメータ、フォーマット指定などの任意の文字列での指定を行う。
また、一部のパラメータは接続クライアントからの同じ名前の環境変数を使用して ユーザー・プロセス の動作環境を変更することができる。
すべてのパラメータが環境変数と対になっているわけではない。
NLS_LANG 環境変数は {NLS_LANGUAGE}_{NLS_TERRITORY}.{NLS_CHARACTERSET} であらわし、同時にそのユーザー・プロセスにおける 3つの NLS 初期化パラメータを設定する。しかし、NLS_CHARACTERSET は環境変数に設定しても効果がない。
NLS パラメータ (一部抜粋)
NLS_* パラメータの現在の値を調べる
V$NLS_PARAMETERS ビューに格納されている。
⇒ データベースの OS 関連情報を取得する
SQL> select * from v$nls_parameters;
PARAMETER VALUE
-------------------------- ------------------------------
NLS_CALENDAR GREGORIAN
NLS_CHARACTERSET JA16EUCTILDE
NLS_COMP BINARY
NLS_CURRENCY \
NLS_DATE_FORMAT YYYY-MM-DD HH24:MI:SS
NLS_DATE_LANGUAGE JAPANESE
NLS_DUAL_CURRENCY \
NLS_ISO_CURRENCY JAPAN
NLS_LANGUAGE JAPANESE
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_NCHAR_CONV_EXCP FALSE
NLS_NUMERIC_CHARACTERS .,
NLS_SORT BINARY
NLS_TERRITORY JAPAN
NLS_TIMESTAMP_FORMAT YYYY-MM-DD HH24:MI:SS
NLS_TIMESTAMP_TZ_FORMAT RR-MM-DD HH24:MI:SSXFF TZR
NLS_TIME_FORMAT HH24:MI:SSXFF
NLS_TIME_TZ_FORMAT HH24:MI:SSXFF TZR
NLS_CALENDAR
SQL> ALTER SESSION SET NLS_CALENDAR='JAPANESE IMPERIAL' ;
セッションが変更されました。
SQL> SELECT SYSDATE FROM DUAL ;
SYSDATE
------------------------------------------
平成17年08月13日
SQL> ALTER SESSION SET NLS_CALENDAR='GREGORIAN' ;
セッションが変更されました。
SQL> SELECT SYSDATE FROM DUAL ;
SYSDATE
--------
05-08-13
NLS_DATE_LANGUAGE
暦(月、曜日)をあらわす言語の指定、Oracle 10g から月の名前('MON')が日本語名に変更されている。
デフォルト値は NLS_LANGUAGE を継承
SQL> ALTER SESSION SET NLS_DATE_LANGUAGE='JAPANESE' ;
セッションが変更されました。
SQL> SELECT NEXT_DAY (SYSDATE , 'MONDAY' ) FROM DUAL ;
SELECT NEXT_DAY (SYSDATE , 'MONDAY' ) FROM DUAL
*
行1でエラーが発生しました。:
ORA-01846: 指定した曜日が無効です。
SQL> SELECT NEXT_DAY (SYSDATE , '月曜' ) FROM DUAL ;
NEXT_DAY (SYSDATE ,'
-------------------
2005/08/08 23:08:12
SQL> ALTER SESSION SET NLS_DATE_LANGUAGE=' AMERICAN';
セッションが変更されました。
SQL> SELECT NEXT_DAY(SYSDATE, ' MONDAY') FROM DUAL;
NEXT_DAY(SYSDATE,' M
-------------------
2005/08/08 23:08:12
SQL> SELECT NEXT_DAY (SYSDATE , '月曜' ) FROM DUAL ;
SELECT NEXT_DAY (SYSDATE , '月曜' ) FROM DUAL
*
行1でエラーが発生しました。:
ORA-01846: 指定した曜日が無効です。
NLS_DATE_FORMAT、NLS_TIMESTAMP_FORMAT 、NLS_TIMESTAMP_TZ_FORMAT
DATE 型は NLS_DATE_FORMAT
タイムスタンプ型は NLS_TIMESTAMP_FORMAT
タイムゾーン付のタイムスタンプ型は NLS_TIMESTAMP_TZ_FORMAT
のパラメータでフォーマットされる
SQL> SELECT SYSDATE FROM DUAL ;
SYSDATE
--------
05-02-11
SQL> ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS' ;
セッションが変更されました。
SQL> SELECT SYSDATE FROM DUAL ;
SYSDATE
-------------------
2005-02-11 15:15:10
SQL> ALTER SESSION SET NLS_TIMESTAMP_FORMAT = 'RR-MM-DD HH24:MI:SSXFF' ;
...略
SQL> SELECT LOCALTIMESTAMP FROM DUAL ;
LOCALTIMESTAMP
------------------------
05-02-11 15:15:23.336681
SQL> ALTER SESSION SET NLS_TIMESTAMP_TZ_FORMAT= 'RR-MM-DD HH24:MI:SSXFF3 TZR' ;
...略
SQL> SELECT SYSTIMESTAMP FROM DUAL ;
SYSTIMESTAMP
---------------------------------------------------------------------------
05-02-11 15:15:32.445 +09:00
NLS_LENGTH_SEMANTICS
NLS_LENGTH_SEMANTICS を 'CHAR' にすると文字列の指定は CHAR 単位になる。BYTE 単位にしたい場合には明示的に指定しなければならない。
SQL> ALTER SESSION SET NLS_LENGTH_SEMANTICS='CHAR' ;
セッションが変更されました。
SQL> CREATE TABLE CHARBASE_TABLE(
2 NAME1 VARCHAR2(5),
3 NAME2 VARCHAR2(5 BYTE)
4 );
表が作成されました。
SQL> DESC CHARBASE_TABLE
名前 NULL? 型
----------------------------------------- -------- ----------------------------
NAME1 VARCHAR2(5)
NAME2 VARCHAR2(5 BYTE)
SQL> INSERT INTO CHARBASE_TABLE VALUES ('あいうえお' , '12345' );
1行が作成されました。
SQL> INSERT INTO CHARBASE_TABLE VALUES ('123456' , 'あい' );
INSERT INTO CHARBASE_TABLE VALUES ('123456' , 'あい' )
*
行1でエラーが発生しました。:
ORA-12899: 列"RIVUS" ."CHARBASE_TABLE" ."NAME1" の値が大きすぎます(実際: 6、最大:
5)
SQL> INSERT INTO CHARBASE_TABLE VALUES ('12345' , 'あいう' );
INSERT INTO CHARBASE_TABLE VALUES ('12345' , 'あいう' )
*
行1でエラーが発生しました。:
ORA-12899: 列"RIVUS" ."CHARBASE_TABLE" ."NAME2" の値が大きすぎます(実際: 6、最大:
5)
SQL> INSERT INTO CHARBASE_TABLE VALUES ('あいうえお' , 'あい' );
1行が作成されました。
SQL>
SQL> SELECT * FROM CHARBASE_TABLE ;
NAME1 NAME2
---------- ----------
あいうえお 12345
あいうえお あい
SQL>
SQL> DROP TABLE CHARBASE_TABLE;
表が削除されました。
NLS_TERRITORY
NLS_TERRITORY により影響のある項目 カッコ内は日本仕様
日付書式 (RR-MM-DD)
時刻の書式 (hh24:MI:SS)
週初めの曜日(日曜) ISO は月曜
小数点文字とグループ・セパレータ(,.)
通貨記号 (¥)
ISO 通貨記号 (JPY)
以下はよくわかりません。
貸方および借方記号 ⇒ NLS_CREDIT(' ':空白) / NLS_DEBIT(-:マイナス) : 書式フォーマットに影響する?
ISO 週フラグ ( ? ) IW 書式に影響(年の最初の暦週:日曜/月曜)?
リスト・セパレータ(カンマ(,) でない国がある? )
NLS_LANGUAGE
NLS_LANGUAGEのより影響のある項目 カッコ内は日本仕様
サーバー・メッセージの言語 エラーメッセージが日本語になる。
月の名称 (数値のまま) 、Oracle 10g では '1月' などになる。
曜日の名称(日曜〜土曜)
ソート順 (デフォルトではバイナリ)
書き込み方向(左から右へ)
「はい、いいえ」の選択肢が必要なときの入力文字列 (たぶん YES、NO )
NLS_SORT
JAPANESE_M_CI を使用すると大文字、小文字、半角、全角を区別しないで扱うことができる。
関連ディクショナリビュー
V$NLS_PARAMETERS
V$SESSION_CONNECT_INFO
NLS_DATABASE_PARAMETERS
NLS_INSTANCE_PARAMETERS
NLS_SESSION_PARAMETERS
関連事項