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
方法如下
与运算
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中运行会报错

求助啊 ,多谢了