Tom,
Apologies about the name - I thought it was PostGre - SQL.
I did try a row type, but got an error.
Does the 'rowtype' have to exist as a definition in the database?
I get the following:
dev_vhr=# \i /tmp/stevetpsql:/tmp/stevet:67: ERROR: type "resultrec" does not exist From the attached. If 'resultrec' has to exist, then we have quite a few 'definitions' we'd need to set up in the database.
Would returning a record type work - ie collate the information in the function, then select all the variables into a record type from a dummy table?
IE
..... get data into local variables, then .......
SELECT l_status, l_error_text,l_code,l_recNo,l_description
INTO myRec
FROM blankTable
WHERE recNo = 1;
Is that sensible? Does that also get away with just one local definition?
On Sun, 2004-08-08 at 21:26, Tom Lane wrote:
Steve Tucknott <steve@retsol.co.uk> writes:
> Is there a way of doing:
> RETURNS INTEGER, CHAR(5), VARCHAR(200),.....
> IE return multiple values from a PL/PGSQL function?
You have to return a rowtype value.
There's an example in the 8.0devel docs:
http://developer.postgresql.org/docs/postgres/plpgsql-porting.html#PLPGSQL-PORTING-EX3
The example is making use of an 8.0-only feature (explicit names for
parameters) but otherwise I believe it would work in 7.4. Not sure
about pre-7.4.
BTW, the correct name of our software is PostgreSQL or informally
Postgres. No one associated with the project has ever called it
"Postgre". Pronounce it "post-gress" or "post-gress-cue-ell".
regards, tom lane
Regards,
Steve Tucknott
ReTSol Ltd
DDI: 01903 828769
|