1. 程式人生 > >sql中字串被截斷的問題除錯

sql中字串被截斷的問題除錯

今天下午在程式呼叫一個儲存過程的時候出現了字串截斷問題,因為自己是實習生,而且對sql比較生疏,所以花了一個多小時才排查出來。

首先是檢視報錯資訊,

執行儲存過程 {call dbo.statisticAdvanceReport(?,?,?,?,?,?,?,?,?,?,?,?,?,?)} 出錯:物件名 'b' 無效。
16:03:26,124 ERROR [STDERR] com.ztkj.batj.exception.DaoException: 執行儲存過程 {call dbo.statisticAdvanceReport(?,?,?,?,?,?,?,?,?,?,?,?,?,?)} 出錯:物件名 'b' 無效。

判斷是呼叫儲存過程時出錯,然後先看介面傳入引數有無出現字串出錯,截斷。之後找到相應儲存過程,把介面引數傳入儲存過程進行執行,發現仍然報這個錯誤,證明是儲存過程的問題。

下一步,在儲存過程把涉及的查詢語句輸出,發現其中有一部分語句被截斷,造成查詢語句出錯。

找到那句的相關變數,看是否變數長度不夠,造成截斷?

因為其中涉及到了一個函式的呼叫,函式裡面的返回結果的長度沒有考慮到,所以浪費了很多時間。

最終問題就是在函式返回的資料型別的問題,長度過短,導致資料被截斷。

雖然不是大問題,但是整個處理問題的流程,思路可以記錄下來。