Я работаю над функцией из книги Джо Селкоса - Деревья и иерархии в SQL для умников
Я пытаюсь удалить поддерево из списка смежности, но часть моя функция еще не работает.
WHILE EXISTS –– mark leaf nodes
(SELECT *
FROM OrgChart
WHERE boss_emp_nbr = −99999
AND emp_nbr > −99999)
LOOP –– get list of next level subordinates
DELETE FROM WorkingTable;
INSERT INTO WorkingTable
SELECT emp_nbr FROM OrgChart WHERE boss_emp_nbr = −99999;
–– mark next level of subordinates
UPDATE OrgChart
SET emp_nbr = −99999
WHERE boss_emp_nbr IN (SELECT emp_nbr FROM WorkingTable);
END LOOP;
мой вопрос: является ли WHILE EXISTS правильным для использования с postgresql? Я, кажется, спотыкаюсь и попадаю в бесконечный цикл в этой части. Возможно, есть более правильный синтаксис, о котором я не знаю.