Thread: composite types

composite types

From
Ivan Sergio Borgonovo
Date:
I'd like to compute some "row like" results and return them from a
function (and pass the result to PHP[*]).

Well I've read about composite type but all the references I've seen
are about coding in C. That's not the way I'd like to follow by now.

I was expecting to declare composite types in plpsql or plain sql in a
similar way I'd do in C/C++ with struct/class.

I've found this
http://archives.postgresql.org/pgsql-general/2001-03/msg01459.php
but I'd like to avoid to declare a table just for a temp.

pseudocode follow

declare struct pippo(
    integer a;
    varchar(8) b;
)

create or replace function functiontest( ) returns pippo
as '
declare
    integer tempa;
    varchar(8) tempb;

begin
    /*
    do stuff to fill tempa and tempb
    */
    return (tempa,tempb)
end
' language plpgsql;

[*] I guess that to access the result of such a function
...
$SQLResult = pg_exec( $SQLConn, "SELECT functiontest( );" );
$SQLData = pg_fetch_row( $SQLResult, 0 );
should be enough...

thx



Re: composite types

From
Ivan Sergio Borgonovo
Date:
On Tue, 20 Apr 2004 17:41:30 +0200
Ivan Sergio Borgonovo <mail@webthatworks.it> wrote:

> I'd like to compute some "row like" results and return them from a
> function (and pass the result to PHP[*]).
>
> Well I've read about composite type but all the references I've seen
> are about coding in C. That's not the way I'd like to follow by now.
>
> I was expecting to declare composite types in plpsql or plain sql in
> a similar way I'd do in C/C++ with struct/class.

<shame>
http://pgsqld.active-venture.com/sql-createtype.html
This seems more like what I was looking for.
</shame>

I'll do some tests tomorrow and get back to the list if it isn't what
I was looking for.




Re: composite types

From
Steve Manes
Date:
Ivan Sergio Borgonovo wrote:

> I've found this
> http://archives.postgresql.org/pgsql-general/2001-03/msg01459.php
> but I'd like to avoid to declare a table just for a temp.
>
> pseudocode follow
>
> declare struct pippo(
>     integer a;
>     varchar(8) b;
> )
>
> create or replace function functiontest( ) returns pippo
> as '
> declare
>     integer tempa;
>     varchar(8) tempb;
>

I think you might want to look at SRFs (Set Returning Functions).  Here
are a couple of links:

http://techdocs.postgresql.org/guides/SetReturningFunctions
http://www.varlena.com/varlena/GeneralBits/26.html