Рекурсивная функция Postgres с возвратом - на dbeaver - PullRequest
0 голосов
/ 06 ноября 2018

Я пытаюсь создать функцию на postgresql db, используя dbeaver. но при попытке сохранить функцию я получаю ошибку. он говорит "синтаксическая ошибка в или около" ВОЗВРАТ "". Может быть, кто-нибудь увидит, в чем проблема.

CREATE OR REPLACE FUNCTION public.concept_children_by_id(concept_id bigint)
 RETURNS TABLE(concept_description character varying, component_id bigint, father_id bigint, curr_level integer)
 LANGUAGE plpgsql
AS $function$ 
    BEGIN 
        WITH RECURSIVE OURCTE(component_id, father_id, curren_level) AS
        (
            SELECT 
                rel."sourceId",
                rel."destinationId",
                1::integer
            FROM 
                en."sct2_Relationship_Snapshot_INT" AS rel
            WHERE 
                rel."destinationId" = concept_id
                AND 
                rel.active = '1'  
                AND 
                rel."typeId" = 116680003
            UNION ALL
                SELECT 
                    e."sourceId",
                    e."destinationId",
                    rl.curren_level + '1'
                FROM
                    OURCTE rl,
                    en."sct2_Relationship_Snapshot_INT" e                       
                WHERE 
                    e."destinationId" = rl."component_id" 
                    AND 
                    e.active = '1' 
                    AND 
                    e."typeId" = 116680003
            )   
            RETURN QUERY 
                SELECT DISTINCT 
                    des.term, 
                    O.component_id, 
                    O.father_id, 
                    O.curren_level  
                FROM OURCTE O
                INNER JOIN en."sct2_Description_Snapshot-en_INT" des ON (O.component_id = des."conceptId")
                WHERE 
                    des."typeId" = 900000000000003001;
                ORDER BY curren_level;
            RETURN;  
    END;
 $function$
...