Thread: table functions + user defined types

table functions + user defined types

From
"BARTKO, Zoltan"
Date:
Ladies and Gentlemen,
 
Please, enlighten me, if you can, in the following matter:
 
I made a type:
 
create type my_type as (
    a integer,
    b integer
);
 
since I have a table:
 
create table my_table (
    a integer;
);
 
and I have now a function too:
 
create or replace function my_func (
    integer, -- a
    integer, -- b
) returns setof my_type as
'
declare
    pa alias for $1;
    pb alias for $2;
    -- declarations
    my_value    my_type;
begin
    my_value.a := pa;
    my_value.b := pb;
    return my_value;
end;
' language 'plpgsql';
 
when I run this darling function I get a parse error pointing to the line after "begin".
 
What am I doing wrong? I have skimmed through all the manuals, had a look at the postgresql cookbook, no info on this.  I just would like to have a function that returns more fields at the same time - add a column to table my_table, where I could occasionally return some value (e.g. error code). How to do this?
 
Thanks for your advice in advance
 
Zoltan Bartko
 

Re: table functions + user defined types

From
Adam Witney
Date:
On 27/10/03 3:20 pm, "BARTKO, Zoltan" <bartko.zoltan@pobox.sk> wrote:

> Ladies and Gentlemen,
>
> Please, enlighten me, if you can, in the following matter:
>
> I made a type:
>
> create type my_type as (
>   a integer,
>   b integer
> );
>
> since I have a table:
>
> create table my_table (
>   a integer;
> );
>
> and I have now a function too:
>
> create or replace function my_func (
>   integer, -- a
>   integer, -- b
> ) returns setof my_type as
> '
> declare
>   pa alias for $1;
>   pb alias for $2;
>   -- declarations
>   my_value    my_type;
> begin
>   my_value.a := pa;
>   my_value.b := pb;
>   return my_value;
> end;
> ' language 'plpgsql';


Try this....

create or replace function my_func (
    integer, -- a
    integer -- b
) returns my_type as
'
 declare
   pa alias for $1;
   pb alias for $2;
   -- declarations
   my_value    record;
 begin
   select into my_value pa, pb;
   return my_value;
 end;
 ' language 'plpgsql';


> when I run this darling function I get a parse error pointing to the line
> after "begin".
>
> What am I doing wrong? I have skimmed through all the manuals, had a look at
> the postgresql cookbook, no info on this.  I just would like to have a
> function that returns more fields at the same time - add a column to table
> my_table, where I could occasionally return some value (e.g. error code). How
> to do this?
>
> Thanks for your advice in advance
>
> Zoltan Bartko
>



--
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.