码迷,mamicode.com
首页 > 数据库 > 详细

Oracle PLS-00114: 标识符 ' ' 太长

时间:2018-10-22 16:40:14      阅读:569      评论:0      收藏:0      [点我收藏+]

标签:res   red   processes   HERE   rtu   字节   问题:   system   mount   

在创建存储过程包的时候报标识符过长问题:
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: 标识符 ' ' 太长

标签:res   red   processes   HERE   rtu   字节   问题:   system   mount   

原文地址:https://www.cnblogs.com/5588kjx/p/9830496.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!