powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / как правильно запустить рекурсивную функцию?
8 сообщений из 8, страница 1 из 1
как правильно запустить рекурсивную функцию?
    #39323711
fobster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть код:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
CREATE OR REPLACE FUNCTION accounts.get_group_by_group(_id uuid) RETURNS table (id uuid) as $$
BEGIN
RETURN QUERY
WITH RECURSIVE R AS 
(select id, parent_id, name
from accounts.groups where id=_id
UNION ALL

   SELECT accounts.groups.id, accounts.groups.parent_id, accounts.groups.name
   FROM accounts.groups
      JOIN R
          ON accounts.groups.parent_id = r.id
)
select *from R
END;
$$ 
LANGUAGE plpgsql



как правильно ее запустить?
ОШИБКА: ошибка синтаксиса (примерное положение: "END")
LINE 15: END;
...
Рейтинг: 0 / 0
как правильно запустить рекурсивную функцию?
    #39323745
Alexius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fobster,

; после запроса дописать судя по ошибке.
...
Рейтинг: 0 / 0
как правильно запустить рекурсивную функцию?
    #39323746
fobster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
запрос исправлен. но теперь ругается на поле id. что здесь неверно, не вижу
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
CREATE OR REPLACE FUNCTION accounts.get_group_by_group(_id uuid) RETURNS table (id uuid, parent_id uuid, name character varying(64)) as $$
BEGIN
RETURN QUERY
WITH RECURSIVE R AS 
(select id, parent_id, name
from accounts.groups where id=(_id)
UNION ALL

   SELECT accounts.groups.id, accounts.groups.parent_id, accounts.groups.name
   FROM accounts.groups
      JOIN R
          ON accounts.groups.parent_id = r.id
)
select *from R;
END;
$$ 
LANGUAGE plpgsql



запускаю как SELECT accounts.get_group_by_group('4d238f98-6dcb-11e6-bb47-5751e87b9ce8')

ОШИБКА: неоднозначная ссылка на колонку "id"
LINE 2: (select id, parent_id, name
...
Рейтинг: 0 / 0
как правильно запустить рекурсивную функцию?
    #39323748
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fobsterесть код:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
CREATE OR REPLACE FUNCTION accounts.get_group_by_group(_id uuid) RETURNS table (id uuid) as $$
BEGIN
RETURN QUERY
WITH RECURSIVE R AS 
(select id, parent_id, name
from accounts.groups where id=_id
UNION ALL

   SELECT accounts.groups.id, accounts.groups.parent_id, accounts.groups.name
   FROM accounts.groups
      JOIN R
          ON accounts.groups.parent_id = r.id
)
select *from R  ;
END;
$$ 
LANGUAGE plpgsql



как правильно ее запустить?
ОШИБКА: ошибка синтаксиса (примерное положение: "END")
LINE 15: END;

хотя зачем вам вообще end


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
CREATE OR REPLACE FUNCTION accounts.get_group_by_group(_id uuid) RETURNS table (id uuid) as $$
--BEGIN
--RETURN QUERY
WITH RECURSIVE R AS 
(select id, parent_id, name
from accounts.groups where id=_id
UNION ALL

   SELECT accounts.groups.id, accounts.groups.parent_id, accounts.groups.name
   FROM accounts.groups
      JOIN R
          ON accounts.groups.parent_id = r.id
)
select *from R  ;
--END;
$$ 
LANGUAGE sql



но у вас ещё и возврат описан не верно. там 3 поля возвращаются.
...
Рейтинг: 0 / 0
как правильно запустить рекурсивную функцию?
    #39323763
fobster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwq,

ОШИБКА: неоднозначная ссылка на колонку "id"
LINE 2: (select id, parent_id, name

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
CREATE OR REPLACE FUNCTION accounts.get_group_by_group(_id uuid) RETURNS table (id uuid, parent_id uuid, name character varying(64)) as $$
BEGIN
RETURN QUERY
WITH RECURSIVE R AS 
(select id, parent_id, name
from accounts.groups where id=(_id)
UNION ALL

   SELECT accounts.groups.id, accounts.groups.parent_id, accounts.groups.name
   FROM accounts.groups
      JOIN R
          ON accounts.groups.parent_id = r.id
)
select *from R;
END;
$$ 
LANGUAGE plpgsql
...
Рейтинг: 0 / 0
как правильно запустить рекурсивную функцию?
    #39323776
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fobster,

что, в каждую плюху вас за ручку мордой тыкать ?
воспользуйтесь поиском, не вы первый
или почитайте факинг мануал
гугл наконец
...
Рейтинг: 0 / 0
как правильно запустить рекурсивную функцию?
    #39323867
fobster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwq,

спасибо за совет, ничего нового.
...
Рейтинг: 0 / 0
как правильно запустить рекурсивную функцию?
    #39323874
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / как правильно запустить рекурсивную функцию?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]