我在postgres中存储了一个带有变量的程序,如
DECLARE
totLen BYTEA;
BEGIN
totLen = E'\\x000034';
....
totLen必须正好是3个字节,我必须总结其他值,如
totLen = totLen + 1;
我尝试了totLen = totLen + E' \ x01'但是没有用。 什么是正确的解决方案?
答案 0 :(得分:0)
这是一个函数,它将offs
值bytea
的偏移b
中的三个字节视为三字节大端整数,并将i
添加到该数字:
CREATE OR REPLACE FUNCTION add(b bytea, offs integer, i integer) RETURNS bytea
LANGUAGE plpgsql IMMUTABLE STRICT AS
$$DECLARE
result integer := get_byte(b, offs) * 65536 +
get_byte(b, offs + 1) * 256 +
get_byte(b, offs + 2) +
i;
BEGIN
IF result > 16777215 THEN
RAISE EXCEPTION 'addition overflows';
END IF;
RETURN set_byte(
set_byte(
set_byte(
b,
offs,
result / 65536
),
offs + 1,
(result % 65536) / 256
),
offs + 2,
result % 256
);
END;$$;