2016年2月26日 星期五

ORA-01722 invalid number

今天在處理一個卡號欄位,原本是6位數字卡號,
現在新需求是把卡號的主檔裡一些欄位資訊帶出來,
所以理所當然就做一個JOIN就結束,
同時也做了另外幾個相同功能裡面的新需求,
本機+測試DB上跑也正常,
但到了本機+正式機DB測試後卻跳了ORA-01722 invalid number錯誤,

兜了快20分鐘,甚至找歪方向,發現拿掉
ROW_NUMBER() OVER( ORDER BY MY_DATE DESC )
這個行號欄位後就能跑,但實際上問題不在這裡,整個誤導思路...

後來才想通,有新需求才有新BUG,檢視新加的TABLE才想起來,
因為這個卡號欄位後來又塞了不是數字的值,
所以JOIN時文字對上數字,就發生ORA-01722錯誤,
解決辦法就是把主檔TABLE的數字ID轉文字,JOIN就成功了...

不過如果一次只處理一個需求,找問題發生點時或許就可以明確指出是這個TABLE了