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