做專案在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發洩一下個人的私憤。呵呵 正文...