0
我想有一个PostgreSQL扩展函数,它可以首先检查表中是否有一行face_area(face int,area float),如果没有,则计算并插入表中。返回应该是area(float),输入应该是face(int)。我在下面写了一个函数,但结果只能是float,我该如何修改函数让返回的结果只是一个浮点数?我该如何修改这个pl/pgsql函数?
CREATE FUNCTION get_area (face integer) RETURNS setof float AS $$
BEGIN
RETURN query SELECT area FROM face_area WHERE face_area.face=$1;
IF NOT FOUND THEN
INSERT INTO face_area VALUES ($1,calc_area($1));
END IF;
END;
$$ LANGUAGE plpgsql;
select get_area(1);
select * from face_area;
你能澄清WHERE子句吗?你将face_area描述为(id int,area float),但使用列“face”...? – 2014-10-06 14:58:15
@AndrewWolfe我修改了它。 – user3419945 2014-10-06 14:59:51
另外,为什么SETOF浮动?为什么你需要返回查询结果? – 2014-10-06 15:10:39