Thread: Passing multiple rows to a function?

Passing multiple rows to a function?

From
Vitaly Belman
Date:
I know that you can pass rows/records to a function but what about a
few rows? Is that possible?

For example, I'd like to send to a function a number of rows from the
"workers" table (e.g "select * from workers where age<10") and the
function will return their summed salary.

--
 ICQ: 1912453
 AIM: VitalyB1984
 MSN: tmdagent@hotmail.com
 Yahoo!: VitalyBe

Re: Passing multiple rows to a function?

From
Michael Fuhr
Date:
On Sun, Apr 24, 2005 at 03:00:55AM +0300, Vitaly Belman wrote:
>
> I know that you can pass rows/records to a function but what about a
> few rows? Is that possible?
>
> For example, I'd like to send to a function a number of rows from the
> "workers" table (e.g "select * from workers where age<10") and the
> function will return their summed salary.

See "Aggregate Functions" in the PostgreSQL Tutorial, and again in
the "Functions and Operators" chapter.  Here are links to documentation
for the latest version of PostgreSQL:

http://www.postgresql.org/docs/8.0/interactive/tutorial-agg.html
http://www.postgresql.org/docs/8.0/interactive/functions-aggregate.html

If you want to create your own aggregate functions, see "User-Defined
Aggregates" in the "Extending SQL" chapter and the documentation
for CREATE AGGREGATE:

http://www.postgresql.org/docs/8.0/interactive/xaggr.html
http://www.postgresql.org/docs/8.0/interactive/sql-createaggregate.html

--
Michael Fuhr
http://www.fuhr.org/~mfuhr/

Re: Passing multiple rows to a function?

From
Vitaly Belman
Date:
I am aware of the aggregate functions but that's not what I need.
Well, it was a bad example to what I really wanted to do, I guess :(
my bad.

I have a recursive table (id, name, parent_id) and I'd like to return
for a given id all its parents - an example to how to do this is given
here http://www.paragoncorporation.com/ArticleDetail.aspx?ArticleID=24.
However, unlike the example I don't want the function to return all
the parents in a string, but instead I want to use the "set returning
functions" to return a table of all the parent_ids. Now I am just
thinking about how to make it a recursive function.

Ideas will be welcome.

On 4/24/05, Michael Fuhr <mike@fuhr.org> wrote:
> On Sun, Apr 24, 2005 at 03:00:55AM +0300, Vitaly Belman wrote:
> >
> > I know that you can pass rows/records to a function but what about a
> > few rows? Is that possible?
> >
> > For example, I'd like to send to a function a number of rows from the
> > "workers" table (e.g "select * from workers where age<10") and the
> > function will return their summed salary.
>
> See "Aggregate Functions" in the PostgreSQL Tutorial, and again in
> the "Functions and Operators" chapter.  Here are links to documentation
> for the latest version of PostgreSQL:
>
> http://www.postgresql.org/docs/8.0/interactive/tutorial-agg.html
> http://www.postgresql.org/docs/8.0/interactive/functions-aggregate.html
>
> If you want to create your own aggregate functions, see "User-Defined
> Aggregates" in the "Extending SQL" chapter and the documentation
> for CREATE AGGREGATE:
>
> http://www.postgresql.org/docs/8.0/interactive/xaggr.html
> http://www.postgresql.org/docs/8.0/interactive/sql-createaggregate.html
>
> --
> Michael Fuhr
> http://www.fuhr.org/~mfuhr/
>


--
 ICQ: 1912453
 AIM: VitalyB1984
 MSN: tmdagent@hotmail.com
 Yahoo!: VitalyBe