Closing Gaps in Celko trees

Поиск
Список
Период
Сортировка
От Ben-Nes Michael
Тема Closing Gaps in Celko trees
Дата
Msg-id 011f01c23239$b31c5ba0$aa0f5ac2@canaan.co.il
обсуждение исходный текст
Ответы Re: Closing Gaps in Celko trees  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-general
Hi All

Im trying to convert one of the functions the Celko wrote for closing gaps
in lft,rgt tree type.

The function return me: ERROR:  parser: parse error at or near "while"

Any ideas ?

# This is Celko sample from book

BEGIN
WHILE EXISTS ( SELECT * FROM gaps )
LOOP UPDATE frammis
SET rgt = CASE WHEN rgt > ( SELECT MIN(start) FROM gaps )
THEN rgt - 1 ELSE rgt END,
lft = CASE WHEN lft > ( SELECT MIN(start) FROM gaps )
THEN lft - 1 ELSE lft END;
END WHILE;


# This is me trying to covert it to PG

CREATE FUNCTION close_gaps()  RETURNS TEXT AS '
DECLARE
right_most_sibling INTEGER;

BEGIN
WHILE EXISTS ( SELECT * FROM gaps )
LOOP UPDATE tree
SET rgt = CASE
WHEN rgt > ( SELECT MIN(start) FROM gaps )
THEN rgt - 1 ELSE rgt END,
lft = CASE
WHEN lft > ( SELECT MIN(start) FROM gaps )
THEN lft - 1 ELSE lft END;
END WHILE;

RETURN NEW;

END;'
LANGUAGE 'plpgsql';



В списке pgsql-general по дате отправления:

Предыдущее
От: stefan@extum.com
Дата:
Сообщение: regression test
Следующее
От: Oliver Elphick
Дата:
Сообщение: Re: just a quick one ...