前幾天遇到了一個存儲過程編譯無法通過的問題。
數據庫是10GR2 的版本
存儲過程編譯時報 ORA-06553 PLS-320 錯誤 以下是圖 
檢查過程語句無錯后還是無法編譯通過
存儲過程非常簡單,接收一個值,然后根據傳進來的值對一個表進行刪除操作。
檢查操作的表,是存在數據庫中的,并且表的狀態也是有效的。
網上找了下這錯誤,并發現了一些類似情況的帖子,很多帖子的共同點都是表結構中存在ORACLE 關鍵字。
于是檢查表結構的字段名,發現有一個字段名為NUMBER (這很明顯是ORACLE 的關鍵字)
把這個NUMBER字段名改名,在重新編譯過程順利通過。
于是分析了下原因
有可能這是ORACLE PLSQL的一個BUG ,它在編譯的時候需要檢查過程中的對象的信息,由于對象中的字段是ORACLE 關鍵字
所以PLSQL無法區分是NUMBER 數據類型還是字段NUMBER,SQL語句通過給字段兩邊加“” 雙引號可以讓ORACLE 知道是字段不是關鍵字
由于沒有11G的環境無法測試11G是否解決了這問題
--------------------------------------
oracle 里修改字段名稱
alter table "CHECKEXACT" rename column "DATE" to date1; //這個DATE 要大寫且加"" ,要不然會出錯的。。。
alter table "CHECKEXACT" rename column "DATE1" to "DATE";