求助:DB2中自定义方法的问题
db2吧
全部回复
仅看楼主
level 1
weshimo 楼主
做项目的时候用到了DB2,必须在里面新建个方法。
方法如下
与运算
CREATE
FUNCTION bit_and (srcNum1 INT, srcNum2 INT) RETURNS INT
LANGUAGE SQL
BEGIN
ATOMIC
DECLARE V_tmp1 INT;
DECLARE V_tmp2 INT;
DECLARE V_bitValue1 INT;
DECLARE V_bitValue2 INT;
DECLARE V_Idx INT;
DECLARE V_RtnValue INT;
if srcNum1=0 then
set V_RtnValue=0;
else
IF srcNum1 >= srcNum2 THEN
SET V_tmp1 = srcNum1;
SET V_tmp2 = srcNum2;
ELSE
SET V_tmp1 = srcNum2;
SET V_tmp2 = srcNum1;
END IF;
SET V_RtnValue = V_tmp2;
SET V_Idx = 0;
WHILE V_tmp2 > 0 DO
SET V_bitValue2 = MOD(V_tmp2,2);
IF V_bitValue2 = 1 THEN
SET V_bitValue1 = MOD(V_tmp1,2);
IF V_bitValue1 = 0 THEN
SET V_RtnValue = V_RtnValue - POWER(2,V_Idx);
END IF;
END IF;
SET V_tmp1 = V_tmp1 / 2;
SET V_tmp2 = V_tmp2 / 2;
SET V_Idx = V_Idx + 1;
END WHILE;
end if;
RETURN V_RtnValue;
END
可是在coolsql中运行会报错
求助啊 ,多谢了
2013年06月25日 09点06分 1
level 10
我在命令行帮你测了一下,是ok的呀。你可以用命令行试试。
2013年06月26日 02点06分 3
level 10
会不会跟db2的版本有关系?我用的v97测的。你什么版本?
2013年06月26日 02点06分 4
OK了,谢谢各位,我保存.sql文件,在最后加了个@,然后再命令行那通过了
2013年06月26日 03点06分
回复 weshimo :nice! 可能coolsql有时候不是那么cool
2013年06月26日 04点06分
好吧,我确实觉得他不怎么cool,麻烦。。。
2013年06月26日 08点06分
1