Heim  >  Artikel  >  Datenbank  >  oracle中bug之ORA-00904:”COS

oracle中bug之ORA-00904:”COS

WBOY
WBOYOriginal
2016-06-07 15:37:031169Durchsuche

笔者今天遇到一个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吧。

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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn