我有以下plggsql函数,它在pg 8.3及更高版本上工作良好,但我需要将其转换回pg 8.1数据库,并且我无法缝合才能正确使用它。将plpgsql递归函数转换回pg8.1
任何提示?我需要摆脱“返回查询”,因为它尚未在8.1中引入...
CREATE OR REPLACE FUNCTION specie_children (specie_id INT, self BOOLEAN)
RETURNS SETOF specie AS
$BODY$
DECLARE
r specie%ROWTYPE;
BEGIN
IF self THEN
RETURN QUERY SELECT * FROM specie WHERE specieid = specie_id;
END IF;
FOR r IN SELECT * FROM specie WHERE parent = specie_id
LOOP
RETURN NEXT r;
RETURN QUERY SELECT * FROM specie_children(r.specieid, FALSE);
END LOOP;
RETURN;
END
$BODY$
LANGUAGE 'plpgsql';
我该如何翻译?
五月与此:http://stackoverflow.com/questions/53108/is-it-possible-to-make-a-recursive-sql-query – Luxspes 2012-07-24 10:02:24
你知道8.1已经死了,不受支持? 8.3即将推出。你应该真的转向当前的版本。 – 2012-07-24 10:32:51
只要用'specie_children'做你已经用'specie'做了什么。你甚至可以使用相同的变量,因为类型必须匹配。 – 2012-07-24 13:06:28