다음 plpgsql 함수는 8.3 및 8.3에서 훌륭하게 작동하지만 8.1 데이터베이스로 다시 변환해야하며 올바른 결과를 얻기 위해 솔기를 잡을 수 없습니다.plpgsql 재귀 함수를 pg8.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';
어떻게이 번역 할 ... 그것은 아직 8.1에 소개되지 않은 것처럼 "RETURN QUERY"없애해야합니까?
월 http://stackoverflow.com/questions/53108/is-it-possible-to-make-a-recursive-sql-query – Luxspes
8.1이 죽었고 지원되지 않는다는 사실을 알고 계십니까? 그리고 8.3은 곧 나올 것입니다. 정말로 현재 버전으로 이동해야합니다. –
'specie_children'으로'specie'로 이미하는 일을하십시오. 형식이 어쨌든 일치해야하므로 동일한 변수를 사용할 수도 있습니다. –