今天自己在家里做畢業設計,遇到了ORACLE數據庫的一些問題,所以來總結一下。自己在上班的時候也遇到客戶過提過這樣的問題,當時自己在百度上查了,給客戶解決完。自己也沒有在意,這次又出現這個問題,又是折騰了一會。真不值,遇到過的問題一定要多去總結和回顧
(一) ONE
第一種情況可能是因為你的SQL中列名寫錯了,導致查詢的時候,報的標識符無效。
或是數據庫中沒有這個列名,但是你的SQL語句中有這個字段。但是客戶就出現了這個問題,我也很費解是什么原因導致數據庫的列缺少了。當時我是直接用PL/SQL遠程直接給客戶添加了缺少的字段。
我覺得這種情況應該是比較少見的。
(二) TWO
我不知道大家用過NAVICAT沒,我很是喜歡用這個工具。他除了很棒的UI界面外。還有很強大的功能。比如說將mysql的數據一鍵遷移到oracle中去,當然反方向也是可以的。
第二種出現的情況就是。Oracle會將小寫自動轉換為大寫。比如你數據庫中的字段是小寫,你查詢的SQL語句也是小寫,但是ORACLE 將你的查詢語句轉為了大寫(ORACLE嚴格區分大小寫)這樣去數據庫中查找,它就找不到對應的字段。這樣數據庫就會報錯。
解決方案:
將這段代碼中的表名替換成自己要修改的表名,就可以把表中所有的小寫字段名一下全部換為大寫,很方便。
begin for c in (select COLUMN_NAME cn from all_tab_columns where table_name='表名') loop begin execute immediate 'alter table 表名 rename column "'||c.cn||'" to '||c.cn; exception when others then dbms_output.put_line('表名'||'.'||c.cn||'已經存在'); end; end loop; end;
附 ORACLE 對照表一張
綜上所述,我們在使用ORACLE數據庫的時候,無論是表的名字,還是表中的字段的名字,都要大寫免去不必要的麻煩