–真是个大坑

使用oracle时,发生标识符无效解决办法
在这里插入图片描述
一般出现该错误的原因:
1、列名写错导致
2、使用了关键字作为了列名

但是这次遇到的情况有点奇葩
通过dblink直接查询该表,并没有报出问题,但在存储过程中通过dblink访问就一直报标识符无效

经过一段时间的尝试,终于发现原因。

原因:在核心库中新建字段时用了大小写,导致使用dblink在另一个库用存过访问该表时无法访问。
修改:重新在核心库建字段,若已有值,按下面步骤操作即可。操作后即可正常使用。
ps:尝试了全大写也会出现标识符无效的问题,只有全小写在存储过程中才不会报错,小写字段新增时是oracle是会自动转成大写的。至于为什么直接全大写也报错,目前我真是小小的脑袋大大的疑惑。

问题字段有值时操作:
select * from 表名
–新增临时字段
alter table 表名 add 字段名临时 VARCHAR2(50);

-------2复制问题字段到临时字段
UPDATE 表名 T1
SET 字段名临时 = (SELECT T2.specTargetcode FROM 表名 T2 WHERE T1.id = T2.id);
–3删除原来的字段
alter table 表名
drop column 问题字段名;
–4重新建字段–字段名小写
alter table 表名 add 字段名全小写 VARCHAR2(500);

-------5复制临时字段对应的值
UPDATE 表名 T1
SET 字段名全小写 = (SELECT T2.字段名临时 FROM 表名 T2 WHERE T1.id = T2.id);

–6删除临时字段
alter table 表名 drop column 字段名临时;

—查了很久网上都没有相关信息,不会吧不会吧,就我一个人踩了这个大坑?

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐