2013-06-12 29 views
1

我在註冊表中爲我的本地語言設置了NLS_LANG。 CMD無法顯示我的本地語言字符,所以我看到jibrish。 我在說的是來自客戶端的提示,而不是實際的數據,例如錯誤消息。僅針對SQL * Plus設置NLS_LANG

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

我需要保持客戶端的設置爲本地NLS,因爲其他程序依賴於它。

我已經嘗試在glogin中添加$set NLS_LANG=AMERICAN_AMERICA.WE8MSWIN1252,但顯然它不工作,因爲只有在sql * Plus已經啓動後才執行腳本。

我的問題是,是否有任何方式將NLS_LANG設置爲AMERICAN_AMERICA.WE8MSWIN1252只有用於SQL * Plus?

+5

創建一個運行'設置一個批處理文件NLS_LANG = ..',然後調用sqlplus的 –

+0

這是我最終會做,如果我不會找到一個創造性的解決方案... – haki

+0

glogin.sql中隻影響在SQL * Plus。你爲什麼認爲它不起作用? –

回答

0

alter session set nls_language ='AMERICAN';

將解決你的問題......

1

可以使用login.sql or glogin.sql的SQL * Plus啓動時運行任意命令,所以在那裏設置相應的會話設置

1

NLS_LANG不能在會議中改變在SQL * Plus。您只能設置langage,領土,數字字符等.. 例如:

在Windows上:

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

NLS_LANG運行SQLPLUS使用前設置環境變量,所以:

set NLS_LANG=AMERICAN_AMERICA.WE8MSWIN1252 

在Unix(Solaris和Linux,CentOS的等)

export NLS_LANG=AMERICAN_AMERICA.WE8MSWIN1252 
0
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; 
+0

你應該在答案中加上一些解釋,以幫助他人。 [回答] – cosmoonot