仅为SQL * Plus设置NLS_LANG

时间:2013-06-12 11:28:58

标签: oracle sqlplus

我在注册表中为我的本地语言设置了NLS_LANG。 CMD无法显示我当地语言的字符,所以我看到jibrish。 我正在谈论来自客户端的提示而不是实际数据,例如错误消息。

SQL> conn scott/tiger
ετσß°.

我需要将客户端的设置保留到本地NLS,因为其他程序依赖于它。

我尝试在glogin中添加$set NLS_LANG=AMERICAN_AMERICA.WE8MSWIN1252,但显然它不起作用,因为脚本只在sql * Plus已经启动后执行。

我的问题是,有没有办法为SQL * Plus设置NLS_LANGAMERICAN_AMERICA.WE8MSWIN1252

5 个答案:

答案 0 :(得分:4)

无法为SQL * Plus中的会话更改

NLS_LANG。您只能设置语言,区域,数字字符等... 例如:

ALTER SESSION SET NLS_LANGUAGE = 'AMERICAN';
ALTER SESSION SET NLS_NUMERIC_CHARACTERS = '.,';

NLS_LANG被设置为环境变量,因此在运行 SqlPlus 之前使用:

在Windows上:

set NLS_LANG=AMERICAN_AMERICA.WE8MSWIN1252

在Unix(Solaris和Linux,centos等)上

export NLS_LANG=AMERICAN_AMERICA.WE8MSWIN1252

答案 1 :(得分:1)

您可以使用login.sql or glogin.sql在SQL * Plus启动时运行任意命令,因此在那里设置适当的会话设置

答案 2 :(得分:0)

alter session set nls_language ='AMERICAN';

将解决您的问题...

答案 3 :(得分:0)

当我今天遇到同样的问题时,这对我有用

从运行sqlplus之前运行的Windows命令提示符

{{1}}

答案 4 :(得分:-1)

set linesize 2000;
select * from NLS_DATABASE_PARAMETERS; 


SHUTDOWN IMMEDIATE;

STARTUP MOUNT;

ALTER SYSTEM ENABLE RESTRICTED SESSION;

ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;

ALTER SYSTEM SET AQ_TM_PROCESSES=0;

ALTER DATABASE OPEN;

ALTER DATABASE CHARACTER SET INTERNAL_USE  WE8MSWIN1252;
alter database national character set internal_use AL16UTF16;

SHUTDOWN IMMEDIATE; 
STARTUP;