筆者今天遇到一個oracle中的bug,詳情請看小生細細道來。 換列名后,標示符還是無效 ORA-00904:”COS_0”: 標示符無效 如題,也許導致這個問題的原因很多,但是本文筆者所要描述的是由于創建表對象時,創建的語句里列名帶有雙引號問題?!啊本褪沁@個符號的原
筆者今天遇到一個oracle中的bug,詳情請看小生細細道來。
換列名后,標示符還是無效ORA-00904:”COS_0”:標示符無效
如題,也許導致這個問題的原因很多,但是本文筆者所要描述的是由于創建表對象時,創建的語句里列名帶有雙引號問題。“”就是這個符號的原因。如下所示:
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創建語句到記事本里,然后把雙引號去掉。
完事,此問題得到解決。
大概這是oracle的bug吧。
帶雙引號的列,能創建成功,但是無法對這個表對象做任何操作。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com