Oracle報ORA-01722錯誤的排查經驗

EBS運行請求報錯,ORA-01722。Oracle關於1722錯誤的描述是這樣的:ORA-01722: invalid number(無效數字)

剛開始排查SQL語句是否有問題,發現同樣的SQL語句在PL/SQL dev中執行不會報錯。

報ORA-01722這個錯誤,一般來說,是由於試圖將字符串轉換爲數字的時候失敗,具體的原因在於字符串中可能含有不是數字的字符。

以下總結出兩點,以後如果有發現這一錯誤,請從這兩方面排查。
如果發生ORA-01722錯誤,可能的原因有兩種:
1)執行的sql語句中包含顯示或者隱式的類型轉換,將字符串轉換到數字類型的時候失敗,字符內容包含非數字字符。解決方法:檢查SQL語句是否包含對字段類型的轉換。

2)將一個字符(varchar2)字段綁定(DefineByPos)到數字(number)類型,從而在取結果時,轉換失敗。解決方法:檢查綁定變量和對應的字段是否順序對應,數據類型對應。

總結:根本原因是oracle隱式類型轉換,是由於字符類型的字段與數字變量進行條件查詢時,oracle會自動將字符的字段或者是變量自動轉換爲數字型,而當字段含有字符時,也就是to_number函數發生異常的時候會報ORA-01722: 無效數字錯誤。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章