轉(zhuǎn)自:https://www.cnblogs.com/misscai/p/10350840.html
今天自己在家里做畢業(yè)設計况脆,遇到了ORACLE數(shù)據(jù)庫的一些問題,所以來總結(jié)一下粗蔚。自己在上班的時候也遇到客戶過提過這樣的問題家淤,當時自己在百度上查了说订,給客戶解決完桅狠。自己也沒有在意,這次又出現(xiàn)這個問題趴荸,又是折騰了一會儒溉。真不值,遇到過的問題一定要多去總結(jié)和回顧
(一)? ONE?
第一種情況可能是因為你的SQL中列名寫錯了赊舶,導致查詢的時候睁搭,報的標識符無效。
或是數(shù)據(jù)庫中沒有這個列名笼平,但是你的SQL語句中有這個字段园骆。但是客戶就出現(xiàn)了這個問題,我也很費解是什么原因?qū)е聰?shù)據(jù)庫的列缺少了寓调。當時我是直接用PL/SQL遠程直接給客戶添加了缺少的字段锌唾。
我覺得這種情況應該是比較少見的。
(二)? TWO?
我不知道大家用過NAVICAT沒夺英,我很是喜歡用這個工具晌涕。他除了很棒的UI界面外。還有很強大的功能痛悯。比如說將mysql的數(shù)據(jù)一鍵遷移到oracle中去余黎,當然反方向也是可以的。
第二種出現(xiàn)的情況就是载萌。Oracle會將小寫自動轉(zhuǎn)換為大寫惧财。比如你數(shù)據(jù)庫中的字段是小寫,你查詢的SQL語句也是小寫扭仁,但是ORACLE?將你的查詢語句轉(zhuǎn)為了大寫(ORACLE嚴格區(qū)分大小寫)這樣去數(shù)據(jù)庫中查找垮衷,它就找不到對應的字段。這樣數(shù)據(jù)庫就會報錯乖坠。
解決方案:
將這段代碼中的表名替換成自己要修改的表名搀突,就可以把表中所有的小寫字段名一下全部換為大寫,很方便熊泵。
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||'已經(jīng)存在');
end;
end loop;
end;
附 ORACLE 對照表一張
綜上所述仰迁,我們在使用ORACLE數(shù)據(jù)庫的時候,無論是表的名字顽分,還是表中的字段的名字轩勘,都要大寫免去不必要的麻煩