Search Postgresql Archives

Re: return two elements

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



You could use your own type, since it seems you know what values you'll be storing there. You can create it like this:

CREATE TYPE MyResult AS (
	dt_inici DATE,
	dt_fi DATE
);


Then you must change your functions as follows:
CREATE OR REPLACE FUNCTION test1() RETURNS MyResult AS '
declare
	r MyResult;
begin
	r.dt_inici:=\'01/01/2005\'::Date;
	r.dt_fi:=\'02/02/2005\'::Date;
	RETURN r;
end; '
LANGUAGE 'plpgsql' VOLATILE; 


CREATE OR REPLACE FUNCTION test2() RETURNS date AS '
declare
	r MyResult;
begin
	r:=test1();
    RETURN r.dt_inici;
end; '
LANGUAGE 'plpgsql' VOLATILE; 

To me, using a TYPE seems clearer than using an array in this case.



2005/6/6, "Rodríguez Rodríguez, Pere" <prr@xxxxxxxxxx>:

Hello,

how can I write a function that return two or more elements?
I try to return a record but after I don't know how to assign returned value to a variable. For example,

CREATE OR REPLACE FUNCTION test1() RETURNS record AS '
declare
        rec record;
begin
        select into rec \'01/01/2005\'::Date as dt_inici, \'02/02/2005\'::Date as dt_fi;
        return rec;
end; '
LANGUAGE 'plpgsql' VOLATILE;

CREATE OR REPLACE FUNCTION test2() RETURNS date AS '
declare
        rec record;
begin
        -- rec := test1();                      << ERROR:  syntax error at or near "rec"
        select into rec test1();
        return rec.dt_inici;            <<  ERROR: record "rec" has no field "dt_inici"
end; '
LANGUAGE 'plpgsql' VOLATILE;

Can I return an array?, and how I take returned array?
I search postgres documentation but I don't find it

Thanks in advance,

pere



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux