sql中字符串被截断的问题调试

今天下午在程序调用一个存储过程的时候出现了字符串截断问题,因为自己是实习生,而且对sql比较生疏,所以花了一个多小时才排查出来。

首先是查看报错信息,

执行存储过程 {call dbo.statisticAdvanceReport(?,?,?,?,?,?,?,?,?,?,?,?,?,?)} 出错:对象名 'b' 无效。
16:03:26,124 ERROR [STDERR] com.ztkj.batj.exception.DaoException: 执行存储过程 {call dbo.statisticAdvanceReport(?,?,?,?,?,?,?,?,?,?,?,?,?,?)} 出错:对象名 'b' 无效。

判断是调用存储过程时出错,然后先看界面传入参数有无出现字符串出错,截断。之后找到相应存储过程,把界面参数传入存储过程进行执行,发现仍然报这个错误,证明是存储过程的问题。

下一步,在存储过程把涉及的查询语句输出,发现其中有一部分语句被截断,造成查询语句出错。

找到那句的相关变量,看是否变量长度不够,造成截断?

因为其中涉及到了一个函数的调用,函数里面的返回结果的长度没有考虑到,所以浪费了很多时间。

最终问题就是在函数返回的数据类型的问题,长度过短,导致数据被截断。

虽然不是大问题,但是整个处理问题的流程,思路可以记录下来。

你可能感兴趣的:(SQL学习之路,职场生活)