更新時間:2022-08-05 09:39:21 來源:動力節(jié)點 瀏覽7890次
Oracle標(biāo)識符無效的原因有哪些呢?
可能是因為你的SQL中列名寫錯了,導(dǎo)致查詢的時候,報的標(biāo)識符無效。
或是數(shù)據(jù)庫中沒有這個列名,但是你的SQL語句中有這個字段。但是客戶就出現(xiàn)了這個問題,我也很費解是什么原因?qū)е聰?shù)據(jù)庫的列缺少了。當(dāng)時我是直接用PL/SQL遠(yuǎn)程直接給客戶添加了缺少的字段。
這種情況應(yīng)該是比較少見的。
不知道大家用過NAVICAT沒,它除了很棒的UI界面外。還有很強(qiáng)大的功能。比如說將mysql的數(shù)據(jù)一鍵遷移到oracle中去,當(dāng)然反方向也是可以的。
Oracle會將小寫自動轉(zhuǎn)換為大寫。比如你數(shù)據(jù)庫中的字段是小寫,你查詢的SQL語句也是小寫,但是ORACLE 將你的查詢語句轉(zhuǎn)為了大寫(ORACLE嚴(yán)格區(qū)分大小寫)這樣去數(shù)據(jù)庫中查找,它就找不到對應(yīng)的字段。這樣數(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數(shù)據(jù)庫的時候,無論是表的名字,還是表中的字段的名字,都要大寫免去不必要的麻煩。如果大家想了解更多相關(guān)知識,可以關(guān)注一下動力節(jié)點的Oracle教程,里面有更豐富的知識等著大家去學(xué)習(xí),相信對大家一定會有所幫助的。
初級 202925
初級 203221
初級 202629
初級 203743