Re: plpgsql recursion
От
Rod Taylor
Тема
Re: plpgsql recursion
Дата
Msg-id
1053655182.279.28.camel@jester
Ответ на
plpgsql recursion (Stefano Vita Finzi)
Список
Дерево обсуждения
plpgsql recursion "Stefano Vita Finzi" <stefano.vita@pronesis.it>
Re: plpgsql recursion Rod Taylor <rbt@rbt.ca>
Re: plpgsql recursion Luis Sousa <llsousa@ualg.pt>
> IF t_rec.node = testing THEN > RETURN ''Circular''; > ELSE > PERFORM dba_test(t_rec.node,testing); > END IF; > I would use this function BEFORE inserting the new row. But if i try SELECT > dba_test(4,1); i don't have the result i expect. Can i you give me an hint > where am i wrong? It's probably working as it's written :) Once it finds 'Curcular' and returns it to the recursed call of dba_test, you immediately throw away the return value. PERFORM should probably be replaced with: ELSE -- ret is a variable SELECT dba_test(t_rec.node, testing) INTO ret; IF ret = ''Circular'' THEN RETURN ret; END IF; END IF; More to the point, if you're attempting to prevent circular items, and this function will be used in the form of a trigger, then simply RAISE EXCEPTION. This way you can ignore having to deal with returned values. -- Rod Taylor PGP Key: http://www.rbt.ca/rbtpub.asc
В списке pgsql-sql по дате отправления
От: Stephan Szabo
Дата: