Как использовать WITH в функции Postgres? - PullRequest
0 голосов
/ 25 ноября 2018

Как написать как в функции?Я хочу написать рекурсивную функцию для расчета веса автомобиля.Это дало мне ошибку как: ОШИБКА: синтаксическая ошибка в или около "WITH"

create or replace function aggregateWeight(p integer)
returns int as
$$ 
begin
    if p in (select p.pid
        from parts p) then
        return (select p.weight
                from parts p)
    else
        return
        WITH RECURSIVE included_parts(pid, sid, quantity) AS (
        SELECT ps.pid, ps.sid, ps.quantity
        FROM partSubPart ps
        UNION ALL
        SELECT pr.pid, ps.sid, pr.quantity*ps.quantity
        FROM included_parts pr, partSubPart ps
        WHERE ps.pid = pr.sid
        )
        SELECT sum(pr.quantity*p.weight)
        FROM included_parts pr, parts p
        where pr.sid in (select p.pid from parts p)
        GROUP BY pid;
end;
$$ language sql;

1 Ответ

0 голосов
/ 25 ноября 2018

Попробуйте заключить в скобки запрос.

Вам также не хватает END IF; после ELSE.

...