1
레코드 세트를 반환하는 PostgreSQL 재귀 함수를 작성하고 있지만 올바른 구문을 모르겠습니다.PostgreSQL 재귀 함수는 레코드 집합을 반환합니다.
다음CREATE TABLE vertical
(
id serial NOT NULL,
name character varying(100) NOT NULL,
insert_timestamp timestamp without time zone NOT NULL DEFAULT now(),
deleted smallint NOT NULL DEFAULT 0,
parent_id integer, // refer to another Vertical
locations character varying(200),
level smallint NOT NULL DEFAULT 1,
CONSTRAINT vertical_pkey PRIMARY KEY (id),
CONSTRAINT vertical_parent_fkey FOREIGN KEY (parent_id)
REFERENCES vertical (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT name_ukey UNIQUE (name)
)
내 SQL 문 (특정 ID로 수직의 모든 차일을 얻기가)됩니다 :
CREATE FUNCTION getAllVerticalChilds(verticalId integer) RETURNS SETOF RECORD AS
$BODY$
BEGIN
WITH RECURSIVE childs(id, name, parent_id, level) AS (
SELECT child.id, child.name, child.parent_id, child.level
FROM vertical child
WHERE child.parent_id = verticalId
UNION ALL
SELECT parent.id, parent.name, parent.parent_id, parent.level
FROM childs child
INNER JOIN vertical parent ON parent.parent_id = child.id where parent.deleted=0
)
SELECT id, name, parent_id, level
FROM childs;
END
$BODY$
LANGUAGE plpgsql VOLATILE;
당신이 날은이 문제를 해결하는 데 도움 시겠어요 여기 순환 표는 열이 아래에 포함하는 수직인가? 정말 고맙습니다!