首頁 >資料庫 >mysql教程 >oracle中bug之ORA-00904:”COS

oracle中bug之ORA-00904:”COS

WBOY
WBOY原創
2016-06-07 15:37:031228瀏覽

笔者今天遇到一个oracle中的bug,详情请看小生细细道来。 换列名后,标示符还是无效 ORA-00904:”COS_0”: 标示符无效 如题,也许导致这个问题的原因很多,但是本文笔者所要描述的是由于创建表对象时,创建的语句里列名带有双引号问题。“”就是这个符号的原

笔者今天遇到一个oracle中的bug,详情请看小生细细道来。

 

换列名后,标示符还是无效ORA-00904:”COS_0”:标示符无效

oracle中bug之ORA-00904:”COS

 

如题,也许导致这个问题的原因很多,但是本文笔者所要描述的是由于创建表对象时,创建的语句里列名带有双引号问题。“”就是这个符号的原因。如下所示:

create table D_METER_SITECHK  (

  READ_ID             NUMBER(16)                     not null,

  METER_ID            NUMBER(16)                     not null,

  TEST_DEPT_NO         VARCHAR2(16),

  "Ua"                 NUMBER(12,4),

  "Ub"                NUMBER(12,4),

  "Uc"                NUMBER(12,4),

  "la"                NUMBER(12,4),

  constraint PK_D_METER_SITECHK primary key (READ_ID)

);

以上语句里的双引号是怎么来的,一是通过建模工具,自动生成的时候,建模工具会默认把一些字段当成关键字,会莫名其妙给这些看似关键字的列名加上双引号‘“’。但是再PL/SQL创建表的时候,PL/SQL却不报错,而且创建出来的表几乎看不出任何问题。

可是当你对这个表做插入数据时却始终插不进去,无论你换任何列名,都无济于事。但是你执行select操作却能正常把数据查出来。很奇怪吧。

不管你换任何列名,只要你不把以上带双引号的四个列删掉,就会一直出错,但是你会发现,无论你怎么删除或者更改上述四个带双引号的列的列名,始终改不了。系统总是提示:ORA-00904:”COS_0” :标示符无效

解决这个问题的唯一办法就是,删掉这个表,当然如果这个表里的列是别的表的主键,那么其他的表也要受到关联。

重新创建表对象,从建模工具里复制自动生成的sql创建语句到记事本里,然后把双引号去掉。

完事,此问题得到解决。

大概这是oraclebug吧。

带双引号的列,能创建成功,但是无法对这个表对象做任何操作。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn