On 25 March 2011 19:13, salah jubeh <s_ju...@yahoo.com> wrote:

> Hello Guys
>
> The query in this function returns the dependency for level one. However, I
> need the dependency for all level. I am still new with plpgsql so; how can I
> use recursive function to return all dependency for all levels
>
> CREATE OR REPLACE FUNCTION dependon (var text) RETURNS SETOF text AS
> $BODY$
> DECLARE
>     node record;
> BEGIN
>
>     FOR node IN SELECT relname FROM pg_class WHERE OID in (
>         SELECT ev_class FROM pg_rewrite, pg_depend
>         WHERE pg_depend.objid = pg_rewrite.oid
>         AND deptype ='n'
>         AND refobjsubid = 1
>         AND refobjid::regclass::text = $1)
>     LOOP
>         IF node.relname IS NOT NULL THEN
>
>             RETURN NEXT depend(node.relname);
>             RETURN NEXT node.relname;
>
>         END IF;
>
>     END LOOP;
> END
> $BODY$
> LANGUAGE 'plpgsql';
>
>
You can do it with "WITH RECURSIVE" without PL/pgSQL:

http://www.postgresql.org/docs/current/static/queries-with.html

Reply via email to