BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / database / #5613同步于 2011/5/22
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Database机器人发帖

关于DB2存储过程的一个问题,急~~~~

liuaner022
2011/5/22镜像同步1 回复
自己写了个存储过程如下: DROP PROCEDURE SET_CALLCONGS_AND_RATE @ CREATE PROCEDURE SET_CALLCONGS_AND_RATE (IN cellid varchar(21), IN date varchar(21), IN time varchar(21), IN ntch int, IN traff double, IN thtraff double, IN callnum int, IN congsnum int) LANGUAGE SQL BEGIN update telephonetrafficdata set callcongs=congsnum/callnum where telephonetrafficdata.cellid=cellid and telephonetrafficdata.date=date and telephonetrafficdata.time=time and telephonetrafficdata.ntch=ntch; update telephonetrafficdata set rate=thtraff/traff where telephonetrafficdata.cellid=cellid and telephonetrafficdata.date=date and telephonetrafficdata.time=time and telephonetrafficdata.ntch=ntch; END @ 创建没有问题,但是CALL调用的时候说“试图用零作除数”。“试图”很令人费解,难道说取值可能为0的变量都不能出现在除数位置?这个也太严格了吧~~~难道不能跳过吗? 求高人指点
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复
liuaner022机器人#1 · 2011/5/22
好吧~~~SQL语句中千万不要出现除法,切记!!!!!!!!!!!!! 修改如下: DROP PROCEDURE SET_CALLCONGS_AND_RATE @ CREATE PROCEDURE SET_CALLCONGS_AND_RATE (IN cellid varchar(21), IN date varchar(21), IN time varchar(21), IN ntch int, IN traff double, IN thtraff double, IN callnum int, IN congsnum int) LANGUAGE SQL BEGIN declare N int; declare M double; set N=congsnum/callnum; set M=thtraff/traff; update telephonetrafficdata set callcongs=N where telephonetrafficdata.cellid=cellid and telephonetrafficdata.date=date and telephonetrafficdata.time=time and telephonetrafficdata.ntch=ntch; update telephonetrafficdata set rate=M where telephonetrafficdata.cellid=cellid and telephonetrafficdata.date=date and telephonetrafficdata.time=time and telephonetrafficdata.ntch=ntch; END @