1. 程式人生 > >Oracle PLS-00114: 標識符 ' ' 太長

Oracle PLS-00114: 標識符 ' ' 太長

ora 執行 oracle 數據庫 immediate dba acl job 2個

在創建存儲過程包的時候報標識符過長問題:
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: 標識符 ' ' 太長