標籤:user 查詢 環境 select ase imp 字元集 變數 建議
問題處理方式:
查詢:select userenv(‘language‘) from dual;
對比電腦環境變數NLS_LANG的值與查詢結果是否一致,如果不一致,修改電腦環境變數NLS_LANG
問題解決後通過查詢資料對會話字元做了一些總結:
字元集分可為三類:
1、資料庫伺服器字元集;
SELECT * FROM NLS_DATABASE_PARAMETERS
NLS_DATABASE_PARAMETERS其來源於props$,是表示資料庫的字元集。
2、用戶端字元集環境
SELECT * FROM V$NLS_PARAMETERS;
SELECT USERENV(‘language‘) FROM DUAL;
USERENV、 V$NLS_PARAMETERS表示當前字元集環境。如果你在用戶端執行,則表示用戶端字元集環境。
其來源於v$parameter,表示用戶端的字元集的設定,可能是參數檔案,環境變數或者是註冊表
3、會話字元集環境
SELECT * FROM NLS_SESSION_PARAMETERS;
可以通過alter session set NLS_LANGUAGE=‘SIMPLIFIED CHINESE‘;修改會話字元集
它來源於v$nls_parameters,表示會話自己的設定,可能是會話的環境變數或者是ALTER SESSION完成,如果會話沒有特殊的設定,將
與 V$NLS_PARAMETERS一致。
用戶端的字元集要求與伺服器一致,才能正確顯示資料庫的非Ascii字元。如果多個設定存在的時候,alter session>環境變數>註冊表>參數檔案
字元集要求一致,但是語言設定卻可以不同,語言設定建議用英文。如字元集是zhs16gbk,則nls_lang可以是American_America.zhs16gbk。
Oracle 字元集小結(遇到一例子:查詢結果欄位標題為漢字,但是顯示為‘?')