Oracle数据库全球化(2)

/bin/csh环境:

setenv NLS_LANG "simplified chinese_china.ZHS16GBK" setenv NLS_DATE_FORMAT "YYYY-MM-DD HH24:Mi:SS"

注意:DBA不能控制终端用户对NLS_LANG环境变量的设置。如果应用程序容易受到全球化的影响,那么开发人员就应该考虑到这个问题,同时在会话内控制全球化设置。
服务器端与客户端全球化设置之间的转换由Oracle Net完成。如果客户端与服务器使用不同的字符集,那么就可能无法完成数据的转换。

1.2.6 会话级别的全球化设置

会话级别的规范优先于服务器端数据库与实例级别的设置,而且会重写用户使用环境变量配置其会话的各种尝试。
设定nls_date_format

--第一种方法 alter session set nls_date_format='YYYY-MM-DD HH24:Mi:SS'; --第二种方法 exec dbms_session.set_nls('nls_date_format','''dd.mm.yyyy'''); --实验验证: SQL> alter session set nls_date_format='YYYY-MM-DD'; Session altered. SQL> select sysdate from dual; SYSDATE ---------- 2016-02-03 SQL> exec dbms_session.set_nls('nls_date_format','''dd.mm.yyyy'''); PL/SQL procedure successfully completed. SQL> select sysdate from dual; SYSDATE ---------- 03.02.2016

查看v$nls_parameters或者nls_session_parameters视图查看当前作用于会话的全球化设置:

select * from v$nls_parameters; select * from nls_session_parameters; SQL> select * from v$nls_parameters; PARAMETER VALUE ------------------------------ ------------------------------ NLS_LANGUAGE SIMPLIFIED CHINESE NLS_TERRITORY CHINA NLS_CURRENCY ¥ NLS_ISO_CURRENCY CHINA NLS_NUMERIC_CHARACTERS ., NLS_CALENDAR GREGORIAN NLS_DATE_FORMAT YYYY-MM-DD HH24:Mi:SS NLS_DATE_LANGUAGE SIMPLIFIED CHINESE NLS_CHARACTERSET ZHS16GBK NLS_SORT BINARY NLS_TIME_FORMAT HH.MI.SSXFF AM NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR NLS_DUAL_CURRENCY ¥ NLS_NCHAR_CHARACTERSET AL16UTF16 NLS_COMP BINARY NLS_LENGTH_SEMANTICS BYTE NLS_NCHAR_CONV_EXCP FALSE 19 rows selected. --查询nls_session_parameters,没有字符集信息 SQL> select * from nls_session_parameters; PARAMETER VALUE ------------------------------ ------------------------------ NLS_LANGUAGE SIMPLIFIED CHINESE NLS_TERRITORY CHINA NLS_CURRENCY ¥ NLS_ISO_CURRENCY CHINA NLS_NUMERIC_CHARACTERS ., NLS_CALENDAR GREGORIAN NLS_DATE_FORMAT YYYY-MM-DD HH24:Mi:SS NLS_DATE_LANGUAGE SIMPLIFIED CHINESE NLS_SORT BINARY NLS_TIME_FORMAT HH.MI.SSXFF AM NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR NLS_DUAL_CURRENCY ¥ NLS_COMP BINARY NLS_LENGTH_SEMANTICS BYTE NLS_NCHAR_CONV_EXCP FALSE 17 rows selected. 1.2.7 语句级别的全球化设置

全球化设置的最优控制级别是在每个SQL语句内进行编程控制,此时必然会在SQL函数中使用NLS参数。
比如:

--分别用英语,简体中文,日语显示职员的入职日期及星期: select to_char(HIREDATE,'Day dd, Month YYYY','NLS_DATE_LANGUAGE=AMERICAN') "English", to_char(HIREDATE,'Day dd, Month YYYY','NLS_DATE_LANGUAGE=''SIMPLIFIED CHINESE''') "Chinese", to_char(HIREDATE,'Day dd, Month YYYY','NLS_DATE_LANGUAGE=JAPANESE') "Japanese" from scott.emp; SQL> select to_char(HIREDATE,'Day dd, Month YYYY','NLS_DATE_LANGUAGE=AMERICAN') "English", 2 to_char(HIREDATE,'Day dd, Month YYYY','NLS_DATE_LANGUAGE=''SIMPLIFIED CHINESE''') "Chinese", 3 to_char(HIREDATE,'Day dd, Month YYYY','NLS_DATE_LANGUAGE=JAPANESE') "Japanese" 4 from scott.emp; English Chinese Japanese ------------------------------------ ------------------------- ------------------------- Wednesday 17, December 1980 星期三 17, 121980 水曜日 17, 121980 Friday 20, February 1981 星期五 20, 21981 金曜日 20, 21981 Sunday 22, February 1981 星期日 22, 21981 日曜日 22, 21981 Thursday 02, April 1981 星期四 02, 41981 木曜日 02, 41981 Monday 28, September 1981 星期一 28, 91981 月曜日 28, 91981 Friday 01, May 1981 星期五 01, 51981 金曜日 01, 51981 Tuesday 09, June 1981 星期二 09, 61981 火曜日 09, 61981 Sunday 19, April 1987 星期日 19, 41987 日曜日 19, 41987 Tuesday 17, November 1981 星期二 17, 111981 火曜日 17, 111981 Tuesday 08, September 1981 星期二 08, 91981 火曜日 08, 91981 Saturday 23, May 1987 星期六 23, 51987 土曜日 23, 51987 Thursday 03, December 1981 星期四 03, 121981 木曜日 03, 121981 Thursday 03, December 1981 星期四 03, 121981 木曜日 03, 121981 Saturday 23, January 1982 星期六 23, 11982 土曜日 23, 11982 14 rows selected. 二、使用数据库和NLS字符集 2.1 语言排序与选择

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/4a4d1cc6748e0d775daa605e49dd9435.html