今天遇到一個項目升級后,執行SQL語句報錯:ORA-06553: PLS-306: 調用 'V' 時參數個數或類型錯誤。后來發現是數據表visit中缺乏相關字段。奇怪的是如果缺乏字段,向來是報錯為:ORA-00904 XXX標識符不存在。這次缺報了這個一個闡述個數或類型錯誤。
后來懷疑是SQL語句中數據表別名的原因。修改別名為其他別名(例如“a”)之后就會得到正常的提示 XXX標識符不存在。估計是在SQL解析時的bug吧,將V.*當做一個函數或者存儲過程去調用了,還匹配不上,結果就報錯 “參數個數或者類型錯誤”
1 select v.visit_id, 2 v.patient_id, 3 v.subspecialtymstr_id, 4 v.admission_datetime, 5 v.discharge_datetime, 6 v.patient_type, 7 v.visit_no, 8 v.patient_class, 9 v.admit_status, 10 v.wardmstr_id, 11 v.medical_condition, 12 v.bedmstr_id, 13 (select bm.bed_no from bedmstr bm where bm.bedmstr_id=v.bedmstr_id and bm.defunct_ind='N') bed_no, 14 v.nursing_level, 15 v.consult_status, 16 v.consult_careprovider_id, 17 v.admission_times, 18 v.blacklist_ind 19 from visit v;