ORA 04043艱難的解決之路

2021-07-26 03:00:41 字數 2021 閱讀 4349

做專案在oracle資料庫裡建立儲存過程時,遇見了乙個奇葩的問題:

建立了乙個名為:pack_kc_check儲存過程,編譯的時候,提示

物件 pack_kc_check 已經刪除

刪除的時候

無論是plsql上手動刪

還是呼叫sql語句drop procedure pack_kc_check;都提示

刪掉 pack_kc_check 錯誤: ora-04043: 物件 pack_kc_check 不存在

當時為了趕專案,負責人讓先將這個放在一邊,重新建立了乙個其他名字的儲存過程,將就著用了。

專案完成後,仔細分析,終於解決,特此整理成文

* 本文詳細的描述了解決該問題的過程,篇幅比較長,如果急需解決問題請直接跳到嘗試3*

oracle裡,自動將所有的字母做大寫處理

該儲存過程為:

create

orreplace package "pack_kc_check"

astype cur is ref cursor;

---====中間的具體儲存過程就不詳細描述了

end pack_kc_check;

遇見問題,當然下意識的去搜尋一下 ora-04043,看到很多都說是格式的問題,說刪除的時候帶上""就好了

drop procedure 「pack_kc_check」;

因為刪除時一直提示

刪掉 pack_kc_check 錯誤: ora-04043: 物件 pack_kc_check 不存在

所以肯定要驗證一下,到底是不是存在該儲存過程,該儲存過程到底去哪了

select * from user_procedures ;

查詢全部的儲存過程後,發現,該儲存過程分明就存在

能夠查詢到該儲存過程,但是卻提示不存在

肯定是某個環節出錯了

仔細對比了一下正常的儲存過程與該儲存過程的屬性

發現該儲存過程是invalid(無效的)

編譯都沒通過,

create

orreplace package "pack_kc_check"

astype cur is ref cursor;

end"pack_kc_check";

刪掉 pack_kc_check 錯誤: ora-04043: 物件 pack_kc_check 不存在

解決到現在,有種只在此山中 雲深不知處的無奈

慢慢冷靜下來,繼續看

刪除的提示是:

刪掉 pack_kc_check 錯誤: ora-04043: 物件 pack_kc_check 不存在

* 前後的大小寫不一樣!!!!!!!!!! *

建立儲存過程時,因為加上了引號,所以大小寫敏感,資料庫中儲存的是pack_kc_check(有大寫有小寫),而刪除的時候,會自動的將其大寫後再刪除,當然就不存在了

再次修改

create

orreplace package "pack_kc_check"

astype cur is ref cursor;

end"pack_kc_check";

為避免因字母大小寫導致的問題,在編寫儲存過程或其他有關命名時盡量直接就採用大寫

艱難的mfc之路

最近心情不是很好 還是埋頭到不會欺負我的 還有c 裡面來吧 剛開始學mfc 很多東西不是很明白 閒來無事 抄一段 進來 慢慢來吧 ifdef adxdll define declare message map private static const afx message entry messag...

技術與管理的遷移艱難之路

前言 有很長的一段時間沒有寫blog了,說沒有時間那是假的,可能真的是疏於自我的管理。人的一輩子要找到乙個好習慣不容易,能堅持乙個好習慣更不容易。我算是有壞習慣的。我想我還會把我的blog寫下去,儘管很多熟悉的人和不怎麼熟悉的都在看我,甚至有些可憐的人就盯著你的blog發洩一下個人的私憤。呵呵 正文...

技術與管理的遷移艱難之路

前言 有很長的一段時間沒有寫blog了,說沒有時間那是假的,可能真的是疏於自我的管理。人的一輩子要找到乙個好習慣不容易,能堅持乙個好習慣更不容易。我算是有壞習慣的。我想我還會把我的blog寫下去,儘管很多熟悉的人和不怎麼熟悉的都在看我,甚至有些可憐的人就盯著你的blog發洩一下個人的私憤。呵呵 正文...