From: | "Albert REINER" <areiner(at)tph(dot)tuwien(dot)ac(dot)at> |
---|---|
To: | PostgreSQL-SQL <pgsql-sql(at)postgreSQL(dot)org> |
Subject: | PL/pgSQL: recursion? |
Date: | 2001-01-02 21:31:36 |
Message-ID: | 20010102223136.A1265@frithjof |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
Saluton,
is there any possibility to do recursion in plpgsql-functions? Here is
what I tried (I know that I can do it with a simple loop, of course; I
am just curious about what one can or cannot do in plpgsql):
,----[ test-recursion ]
| drop table ttt;
| create table ttt
| ( id int4,
| pid int4 );
|
| insert into ttt values (1, NULL);
| insert into ttt values (2, NULL);
| insert into ttt values (3, 1);
| insert into ttt values (4, 1);
| insert into ttt values (5, 1);
| insert into ttt values (6, 2);
| insert into ttt values (7, 2);
|
| drop function idPath(int4);
| create function idPath(int4) returns text as '
| declare
| str text;
| str2 text;
| r record;
| begin
| select id, pid into r from ttt where id = $1;
| str := r.id::text;
| if r.pid IS NOT NULL then
| str2 := idPath(r.id);
| str := str || '':'' || str2;
| end if;
| return str;
| end;' language 'plpgsql';
|
`----
And when I tried to use it, I got:
,----
| select idPath(5);
| pqReadData() -- backend closed the channel unexpectedly.
| This probably means the backend terminated abnormally
| before or while processing the request.
| The connection to the server was lost. Attempting reset: Failed.
`----
I'm running Postgres 7.0.2.
Thanks in advance,
Albert.
--
--------------------------------------------------------------------------
Albert Reiner <areiner(at)tph(dot)tuwien(dot)ac(dot)at>
Deutsch * English * Esperanto * Latine
--------------------------------------------------------------------------
From | Date | Subject | |
---|---|---|---|
Next Message | The Hermit Hacker | 2001-01-02 21:47:33 | Re: Release date for 7.5? |
Previous Message | Diehl, Jeffrey | 2001-01-02 21:28:20 | Release date for 7.5? |