--oracle 自带位与函数BITAND。但是大家可能需要的是设置某位为1或0。
--我做了一个提供给大家。欢迎使用。
-- 举例:把0x0A(十进制为10)的bit4改为1, SELECT SETBIT(10, 4, 1) FROM DUAL;
--结果为:0x1A(十进制为26)
--OCOCO 2008.11.28
CREATE OR REPLACE FUNCTION SETBIT(VAL NUMBER, BITPOS IN NUMBER, BITVAL IN NUMBER) RETURN NUMBER IS
RESULT NUMBER;
BEGIN
RESULT := BITAND((255 + BITPOS) - BITAND(255, BITPOS) * 2, VAL)+BITVAL*BITPOS;
RETURN(RESULT);
END SETBIT;