From: Emre Hasegeli <hasegeli@tart.com.tr> To: salah jubeh <s_jubeh@yahoo.com> Cc: pgsql <pgsql-general@postgresql.org> Sent: Fri, March 25, 2011 6:25:13 PM Subject: Re: [GENERAL] which view is used another views
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: