说明:
把一个表1的部分数据插入另一个表2中根据id,mac作为检索条件,但是id、mac有一个为空。如果id为空,先从另一个表2中查出id值,insert 表1中,如果不为空时,直接插入。
CREATE OR REPLACE FUNCTION 存储过程名(
in_id integer,in_mac text,
参数2,
参数3)
RETURNS boolean AS$BODY$
DECLARE
v_count int;
v_select int;
num int;
v_number int;
BEGIN
IF in_id IS NULL THEN
UPDATE 表名1
SET 字段 = 参数2
WHERE 表1字段 = in_mac;
GET DIAGNOSTICS v_count = ROW_COUNT; //获取执行sql语句成功的行数;
IF v_count = 0 THEN
SELECT sid INTO num
FROM 表2
WHERE 表2 里字段 = in_mac;
GET DIAGNOSTICS v_select = ROW_COUNT; //获取执行sql语句成功的行数;
IF v_select = 0 THEN
RETURN FALSE;
ELSE
INSERT
INTO 一个表名(
sid,
mac,
其他字段)
VALUES(
num,
in_mac,
其他参数
);
RETURN TRUE;
END IF;
ELSE
RETURN TRUE;
END IF;
ELSE
UPDATE 表1
SET mac = in_mac,
其他字段
WHERE sid = in_id;
GET DIAGNOSTICS v_number = ROW_COUNT; //获取执行sql语句成功的行数;
IF v_number = 0 THEN
INSERT
INTO 表1(
sid,
mac,
其他字段)
VALUES(
in_id,
in_mac,
其他参数
);
RETURN TRUE;
END IF;
END IF;
END;
$BODY$
LANGUAGE plpgsql VOLATILE;