From: | "Stefano Vita Finzi" <stefano(dot)vita(at)pronesis(dot)it> |
---|---|
To: | <pgsql-general(at)postgresql(dot)org> |
Subject: | plpgsql recursion |
Date: | 2003-05-20 16:52:14 |
Message-ID: | 019e01c31ef0$2a8b1c50$0600a8c0@stefano |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Greetings!
I have a table like:
node parent
1 2
2 3
3 4
Since i traverse this table with a recursive function, i want to avoid
infinite recursion loop. I have wrote a function to check that a new record
does not create a circular dependency. The function i wrote is as follow:
CREATE OR REPLACE FUNCTION dba_test(INTEGER,INTEGER) RETURNS TEXT AS '
DECLARE
traversing ALIAS FOR $1;
testing ALIAS FOR $2;
t_rec RECORD;
BEGIN
FOR t_rec IN SELECT node,parent FROM dba_test WHERE parent = traversing
LOOP
IF t_rec.node = testing THEN
RETURN ''Circular'';
ELSE
PERFORM dba_test(t_rec.node,testing);
END IF;
END LOOP;
RETURN ''ok'' || testing::text;
END;
' LANGUAGE 'plpgsql';
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?
Thank you!
Stefano Vita Finzi
kluge(at)despammed(dot)com
From | Date | Subject | |
---|---|---|---|
Next Message | Doug McNaught | 2003-05-20 16:54:13 | Re: pg newbie stumped on sequences! |
Previous Message | scott.marlowe | 2003-05-20 16:25:48 | Re: pg newbie stumped on sequences! |