ORACLE 之 標識符無效 問題總結及解決方案


  今天自己在家里做畢業設計,遇到了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數據庫的時候,無論是表的名字,還是表中的字段的名字,都要大寫免去不必要的麻煩

原文地址:https://www.cnblogs.com/misscai/p/10350840.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM