Oracle PLS-00114: 標識符 ' ' 太長
在創建存儲過程包的時候報標識符過長問題:
oracle允許的變量最大長度為30個字符,漢字占兩個字符,末尾的漢字占一個字符
但是創建名稱為"DEF_AAE140_商業補充醫療保險"的constant時,報標識符過長
--查看oracle數據庫字符集:
select userenv(‘language‘) from dual;
--查看oracle數據庫的編碼
select * from nls_database_parameters where parameter =‘NLS_CHARACTERSET‘;
經排查與oracle字符集編碼格式有關,在utf-8中,一個漢字按照3個字節來算,gbk中一個漢字按照2個字節來算。所以上面的字符串會報錯,去掉一個漢字即可以正常執行
修改編碼集
1.打開dos窗口,以sysdba的身份登錄上去
--sqlplus / as sysdba;
2.關閉數據庫
sql> shutdown immediate;
3.以mount打來數據庫
sql> startup mount;
4.設置session
sql> alter system enable restricted session;
system altered.
sql> alter system set job_queue_processes=0;
system altered.
sql> alter system set aq_tm_processes=0;
5.啟動數據庫
sql> alter database open;
6.修改字符集
ALTER DATABASE character set INTERNAL_USE ZHS16GBK;
sql> alter database character set internal_use UTF8;
7.關閉,重新啟動
sql> shutdown immediate; sql> startup;
Oracle PLS-00114: 標識符 ' ' 太長