c
存储过程中写了一个循环,大概意思就是按照rec_id每次取5000条,直到数据取值为空时退出。之前一直运行好好的,没啥毛病。昨天突然有个客户跑了一整晚也没有结束,明显超过时间了。然后我又重新开始跑了一遍,刚开始还挺好,没啥问题。但是到了后期又指出现这个查rec_id的代码,后面的处理程序不跑了。
为了验证是什么情况,我就在前后写了select V_NextRecID;不太会存储过程的调试,就用这个笨方法了。刚开始测试了好几遍也没有发现问题,就是V_NextRecID的值一直没有变化,正常的应该是数值有增加,可是这里不增加,当时我还没有注意到,我在想是不是查询有问题,然后我又把查询打出来了,发现查询数据没有问题,有值,但是为什么就是赋值不上去呢。正纳闷时,发现V_NextRecID的值怎么这么眼熟,定睛一看,这不就是int最大值吗。这个时候我才反应过来我这是数值超限了。
这里有点疑惑的就是这个值超限了没有提示我,直接在循环里面空跑,导致cpu一直打满,但是取值还不对。这个记录一下吧,以后遇到这种问题就可以早点查到问题了。