Recursive SETOF function - Mailing list pgsql-sql

From Richard Rowell
Subject Recursive SETOF function
Date
Msg-id 1101136693.18148.66.camel@richard
Whole thread Raw
Responses Re: Recursive SETOF function
List pgsql-sql
I'm trying to port some TSQL to PLPGSQL.  The DB has a table with a
recursive foreign key that represents a tree hierarchy.  I'm trying to
re-create a TSQL function that pulls out all the ancestors of a given
node in the hierarchy.

I'm rather new to PLSQL and I have several questions.

1.  In TSQL, I can assign a scalar to the result of query like so: SET @var1 = (SELECT foo FROM bar WHERE
bar.uid=@var2)

How would I do this in PLSQL?

2.  In TSQL the "result table" can be inserted into manually.  IE:

CREATE FUNCTION foo () RETURNS @ttable TABLE( uid INTEGER) AS BEGIN INSERT @ttable VALUES (1)RETURN
END

Is there a way to manually insert rows into the result table in PLSQL?


What follows is my TSQL function if that helps give context.  

CREATE FUNCTION svp_getparentproviderids (@child_provider INTEGER)
RETURNS @provider_ids TABLE ( uid INTEGER )
AS
BEGIN   DECLARE @cid AS INTEGER   IF (SELECT count(*) FROM providers WHERE uid =@child_provider) > 0   BEGINSET @cid =
@child_providerWHILE@cid IS NOT NULLBEGIN    INSERT @provider_ids VALUES (@cid)    SET @cid = (SELECT parent_id FROM
providersWHERE uid=@cid)END   END   RETURN
 
END

-- 



pgsql-sql by date:

Previous
From: "Passynkov, Vadim"
Date:
Subject: Re: get sequence value of insert command
Next
From: "Passynkov, Vadim"
Date:
Subject: Missing SELECT INTO ... DEFAULT VALUES in plpgsql for composite t ypes