PL/SQL 別名時用中文字元報錯ora-00911 或中文亂碼解決辦法

來源:互聯網
上載者:User

今天用PL/SQL 9(最新版)的綠色漢化破解版,發現在執行查詢: select user_no 戶號 from lack_charge  這個語句時在 user_no處報錯,錯誤為 ORA-00911: invalid character (無效的字元)。經過實驗所有在別名中只要用中文字元就會報這個錯。後來在網上尋找原因結合實際情況發現:由於是綠色版,所以有些環境變數(或是註冊表中的一些值)並沒有正確設定造成的,解決辦法是建立一個環境變數:

NLS_LANG,值是:AMERICAN.ZHS16GBK。

以下是更詳細的說明:

這個可能是Oracle用戶端和伺服器端的編碼方式不一樣。
select * from v$nls_parameters t where t.PARAMETER ='NLS_LANGUAGE' or t.PARAMETER ='NLS_CHARACTERSET';

--資料庫伺服器字元集
select * from nls_database_parameters;

--用戶端字元集 表示用戶端的字元集的設定,可能是參數檔案,環境變數或者是註冊表
select * from nls_instance_parameters;

--會話字元集的設定,這個沒有特殊設定的話,和nls_instance_parameters一致
select * from nls_session_parameters;

--如果資料庫伺服器端的編碼和用戶端字元集編碼不一樣,則會導致亂碼,因此需要更改用戶端的編碼方式。
--更改用戶端的編碼方式有兩種方式,第一種是更改註冊表,這個比較危險,就不在這裡提及。第二種是設定環境變數。
--設定系統內容變數,建立一個環境變數:
NLS_LANG,值是:AMERICAN.ZHS16GBK。
--值的構成方式是資料庫中查詢的伺服器端的“NLS_LANGUAGE的值”+“.”+“NLS_CHARACTERSET的值”

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.