日期:2014-05-16  浏览次数:20571 次

修改oracle当前会话的语言环境,解决oracle显示中文乱码的问题
对于数据库ORACLE有时操作时,提示的是一串串???,不能起到提示的作用,这是由于语言环境的设置问题,下面是实际操作中要用到的。

查看当前会话的语言环境:
SQL> select userenv('language') from dual;

USERENV('LANGUAGE')
----------------------------------------------------
SIMPLIFIED CHINESE_CHINA.ZHS16GBK

查看语言设置情况:
SQL> SET PAGESIZE 80
SQL> col PARAMETER format a35
SQL> col VALUE format a35
SQL> select * from v$NLS_PARAMETERS;

PARAMETER                           VALUE
----------------------------------- -----------------------------------
NLS_LANGUAGE                        SIMPLIFIED CHINESE
NLS_TERRITORY                       CHINA
NLS_CURRENCY                        RMB
NLS_ISO_CURRENCY                    CHINA
NLS_NUMERIC_CHARACTERS              .,
NLS_CALENDAR                        GREGORIAN
NLS_DATE_FORMAT                     DD-MON-RR
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 TZH:TZM
NLS_TIMESTAMP_TZ_FORMAT             DD-MON-RR HH.MI.SSXFF AM TZH:TZM
NLS_DUAL_CURRENCY                   RMB
NLS_NCHAR_CHARACTERSET              US7ASCII
NLS_COMP                            BINARY

已选择17行。

SQL>

修改当前会话的语言环境变量参数:
ALTER SESSION SET <nls_parameter> = <value>
将语言改为英语:

SQL> ALTER SESSION SET NLS_LANGUAGE=american;
Session altered.

将语言改回中文:
SQL> ALTER SESSION SET NLS_LANGUAGE='SIMPLIFIED CHINESE';
会话已更改。

将地域改为英文:
SQL> ALTER SESSION SET NLS_TERRITORY=america;
会话已更改。

将地域改为中文:
SQL> ALTER SESSION SET NLS_TERRITORY=CHINA;

会话已更改。