ORA-06553 PLS-320

ORA-06553 PLS-320

ORACLE ORA-06553 PLS-320 错误

前几天遇到了一个存储过程编译无法通过的问题。

数据库是10GR2 的版本

存储过程编译时报 ORA-06553 PLS-320 错误 以下是图 ORA-06553 PLS-320_第1张图片

检查过程语句无错后还是无法编译通过

存储过程非常简单,接收一个值,然后根据传进来的值对一个表进行删除操作。

检查操作的表,是存在数据库中的,并且表的状态也是有效的。

网上找了下这错误,并发现了一些类似情况的帖子,很多帖子的共同点都是表结构中存在ORACLE 关键字。

于是检查表结构的字段名,发现有一个字段名为NUMBER (这很明显是ORACLE 的关键字)

把这个NUMBER字段名改名,在重新编译过程顺利通过。

于是分析了下原因

有可能这是ORACLE PLSQL的一个BUG ,它在编译的时候需要检查过程中的对象的信息,由于对象中的字段是ORACLE 关键字

所以PLSQL无法区分是NUMBER 数据类型还是字段NUMBER,SQL语句通过给字段两边加“” 双引号可以让ORACLE 知道是字段不是关键字

由于没有11G的环境无法测试11G是否解决了这问题

--------------------------------------
oracle 里修改字段名称

alter table "CHECKEXACT" rename column "DATE" to date1;   //这个DATE 要大写且加""  ,要不然会出错的。。。
alter table "CHECKEXACT" rename column "DATE1" to "DATE";



欢迎大家访问我的个人网站 萌萌的IT人

你可能感兴趣的:(ORA-06553 PLS-320)