Обсуждение: Return data from function

Поиск
Список
Период
Сортировка

Return data from function

От
"Alexander B."
Дата:
Hello,

I need to create a function that find data over 3 tables, merge and
return data.
With example can be specified more clearly:

1.1 Find all addresses code;
1.2 For each addresses code, get address, complement and city on the
first table;
1.3 For each addresses code, get address, complement and city on the
second table;
1.4 Merge result from first and second tables and return to the function;

I would like to do not using cursor.
Do you have any ideas how to implement?

Thanks in advance.

Re: Return data from function

От
"Jim C. Nasby"
Дата:
The magic you're looking for is UNION ALL.

You could just union the two address tables together and join that to
the address code table, but that'll probably lead to an inefficient
plan. You'll likely need to join the address code table to each address
table separately, and then UNION ALL those together.

On Tue, Apr 17, 2007 at 04:17:36PM -0300, Alexander B. wrote:
> Hello,
>
> I need to create a function that find data over 3 tables, merge and
> return data.
> With example can be specified more clearly:
>
> 1.1 Find all addresses code;
> 1.2 For each addresses code, get address, complement and city on the
> first table;
> 1.3 For each addresses code, get address, complement and city on the
> second table;
> 1.4 Merge result from first and second tables and return to the function;
>
> I would like to do not using cursor.
> Do you have any ideas how to implement?
>
> Thanks in advance.
>
> ---------------------------(end of broadcast)---------------------------
> TIP 6: explain analyze is your friend
>

--
Jim Nasby                                            jim@nasby.net
EnterpriseDB      http://enterprisedb.com      512.569.9461 (cell)

Re: Return data from function

От
Robert Treat
Дата:
On Tuesday 17 April 2007 15:17, Alexander B. wrote:
> Hello,
>
> I need to create a function that find data over 3 tables, merge and
> return data.
> With example can be specified more clearly:
>
> 1.1 Find all addresses code;
> 1.2 For each addresses code, get address, complement and city on the
> first table;
> 1.3 For each addresses code, get address, complement and city on the
> second table;
> 1.4 Merge result from first and second tables and return to the function;
>
> I would like to do not using cursor.
> Do you have any ideas how to implement?
>

I'm not convinced you can't do this from plain sql, but if you're sure a
function is the way to go, see the docs on set returning functions:
http://www.postgresql.org/docs/current/static/xfunc-sql.html#XFUNC-SQL-TABLE-FUNCTIONS

--
Robert Treat
Database Architect
http://www.omniti.com/