Re: Result sets from functions

Поиск
Список
Период
Сортировка
От steve boyle
Тема Re: Result sets from functions
Дата
Msg-id a1l9is$2r7p$1@news.tht.net
обсуждение исходный текст
Ответ на Result sets from functions  ("Kevin Zapico" <kevin.zapico@viewgate.com>)
Ответы Re: Result sets from functions  (Jeff Eckermann <jeff_eckermann@yahoo.com>)
Список pgsql-sql
Kevin,

AFAIK you cannot currently return resultsets from functions in Postgres.  I
remember seing something ages ago that suggested it may be added at some
point but haven't seen anything since.

The docs: http://developer.postgresql.org/docs/postgres/xfunc-sql.html go
through the current usage.

The following shows how you can emulate the return of a resultset using SQL
functions and the SQL IN operator (although I don't know how efficient it
would be over large resultsets):

drop table master;
create table master (   id int4,   ma_val varchar(5),   primary key(id)
);

drop table slave;
drop sequence slave_slave_id_seq;

create table slave (   slave_id serial,   fk_id int4,   sl_val varchar(5),   foreign key (fk_id) references master(id)
);

insert into master(id, ma_val) values(1, 'a');
insert into master(id, ma_val) values(2, 'b');
insert into master(id, ma_val) values(3, 'c');

insert into slave(fk_id, sl_val) values(1, 'c1');
insert into slave(fk_id, sl_val) values(1, 'c2');
insert into slave(fk_id, sl_val) values(1, 'c3');
insert into slave(fk_id, sl_val) values(2, 'c4');
insert into slave(fk_id, sl_val) values(2, 'c5');
insert into slave(fk_id, sl_val) values(3, 'c6');

drop function f_spTest(int4);

create function f_spTest(int) returns setof int as   'select slave_id as slave_id from slave where fk_id = $1;'
language 'SQL';

select * from slave where slave_id in (select f_sptest(1));

One limitation with this is that you need to have a single key into the
table your querying (but you could probably use the OID for this so it
shouldn't be too much of a problem).

hih

sb

"Kevin Zapico" <kevin.zapico@viewgate.com> wrote in message
news:a1jiuh$2i2a$1@news.tht.net...
> I am new to postgres and am trying to get a function to return a result
set
> with multiple columns.
>
> The only way I have seen to do this so far is
>
> select column1(proc()), column2(proc())
>
> This looks like it should call the proc() function twice, although I am
sure
> that it does not. However, I am trying to find out if there is another way
> of doing this.
>
> Please help.
>
>





В списке pgsql-sql по дате отправления:

Предыдущее
От: Jochem van Dieten
Дата:
Сообщение: Re: Error trying to create a functional index.
Следующее
От: "steve boyle"
Дата:
Сообщение: Re: Retrieving information from System Tables