ORA-00904:标识符无效是什么原因

ORA-00904:标识符无效是什么原因,第1张

因为SQL中列名写错了,导致查询的时候,报的标识符无效,或是数据库中没有这个列名,但是SQL语句中有这个字段,可以直接用PL/SQL直接给客户添加了缺少的字段。

Oracle会将小写自动转换为大写,比如数据库中的字段是小写,查询的SQL语句也是小写,但是ORACLE 将查询语句转为了大写(ORACLE严格区分大小写)这样去数据库中查找,它就找不到对应的字段,这样数据库就会报错。

解决方案:将这段代码中的表名替换成自己要修改的表名,就可以把表中所有的小写字段名一下全部换为大写,很方便。

扩展资料:

在程序设计语言中,标识符是用作程序的某一元素的名字的字符串或用来标识源程序中某个对象的名字的,这个元素可以是一个语句标号,一个过程或函数、一个数据元素(例如一个标量变量或一个数组)或程序本身。

最通常是,标识符这个字几乎与变量名同义地使用,在程序数据的位置在整个程序执行期间保持不变的系统中,用于标量变量的标识符联系到存储器地址,而存储器地址又指向机器的存储器内的物理单元,该单元又含有一个值的表示。

标识符与一个值之间的中间关系通常对程序员是透明的,因此在实际中在一个变量的名字(即其标识符)与其值(它是分配给该标识符的存储单元的当前内容)之间出现混淆。

第一种情况:

可能是因为你的SQL中列名写错了,导致查询的时候,报的标识符无效。

或是数据库中没有这个列名,但是你的SQL语句中有这个字段。但是客户就出现了这个问题,我也很费解是什么原因导致数据库的列缺少了。当时我是直接用PL/SQL远程直接给客户添加了缺少的字段。

这种情况应该是比较少见的。

不知道大家用过NAVICAT没,它除了很棒的UI界面外。还有很强大的功能。比如说将mysql的数据一键迁移到oracle中去,当然反方向也是可以的。

第二种情况:

Oracle会将小写自动转换为大写。比如你数据库中的字段是小写,你查询的SQL语句也是小写,但是ORACLE 将你的查询语句转为了大写(ORACLE严格区分大小写)这样去数据库中查找,它就找不到对应的字段。这样数据库就会报错。

不能用 comment 作为列名, 这是保留字, 换成comment1 OK

create table ApproveComment (acId number(19,0) not null, agreed number(1,0), approverTime timestamp, comment1 varchar2(255 char), alternate_userId number(19,0),approver_userId number(19,0), primary key (acId))


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10834120.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-11
下一篇 2023-05-11

发表评论

登录后才能评论

评论列表(0条)

保存