除法函数

场景:【100分】DB2 自定义除法函数 在存储过程中循环调用发生异常

【100分】DB2 自定义除法函数 在存储过程中循环调用发生错误
自定义函数
CREATE FUNCTION SCHEMANAME.DIVIDETEST
(
  OP1 DECIMAL(10,2),
  OP2 DECIMAL(10,2)
)
RETURNS DECIMAL(10,2)
LANGUAGE SQL
BEGIN ATOMIC
  DECLARE RES DECIMAL(10,2);
  IF OP2>0 THEN
  SET RES=OP1/OP2;
  ELSE
  SET RES=99;
  END IF;
  RETURN RES;
END

存储过程
CREATE PROCEDURE CHEMANAME.PRO
(
  IN OP1 DECIMAL(10,2),
  IN OP2 DECIMAL(10,2),
  IN NUM INTEGER
)
LANGUAGE SQL 
BEGIN ATOMIC
  DECLARE RES DECIMAL(10,2);
  DECLARE V1 DECIMAL(10,2);
  DECLARE V2 DECIMAL(10,2);
  SET V1=OP1;
  SET V2=OP2;
  WHILE NUM>0 DO 
  SET RES=CHEMANAME.DIVIDETEST(V1,V2);
  SET NUM=NUM-1;
  END WHILE;
END

调用
CALL CHEMANAME.PRO(1,0,3)
发生错误提示为:‘列函数或算术表达式的处理导致了除零。’
但是在函数中 已经判断了除0的行为 为什么会这样呢



------解决方案--------------------
看起来好像没什么问题,你先test一下函数,如果没问题,再单步测试一下存储过程,跟进去看看,到底是执行到哪一步错了。
------解决方案--------------------
SET RES=CHEMANAME.DIVIDETEST(V1,V2);
前面加一个显示V1、V2值,检查一下参数是否正确,
在UDF中也显示一下OP1、OP2的值
 你的SP、UDF参数 OP1、OP2,修改成不同的名称试试
------解决方案--------------------
CHEMANAME.DIVIDETEST 与 SCHEMANAME.DIVIDETEST 是笔误还是两个UDF?

------解决方案--------------------
好像没啥问题
------解决方案--------------------
探讨
CHEMANAME.DIVIDETEST 与 SCHEMANAME.DIVIDETEST 是笔误还是两个UDF?