Re: ROWTYPE as parameter to function
Nigel J. Andrews <nandrews@investsystems.co.uk>
From: "Nigel J. Andrews" <nandrews@investsystems.co.uk>
To: pgsql-general@postgresql.org
Date: 2002-04-20T15:49:25Z
Lists: pgsql-general
On Fri, 19 Apr 2002, Tom Lane wrote: > "Nigel J. Andrews" <nandrews@investsystems.co.uk> writes: > > Obviously I can't use the RECORD type but when I create the function with: > > CREATE FUNCTION myfunction (myview%ROWTYPE) RETURNS ... ; > > the '%' gets reported in an error message. > > Leave off the %ROWTYPE. Also read the info about composite-type > arguments at > http://www.ca.postgresql.org/users-lounge/docs/7.2/postgres/xfunc-sql.html Thanks Tom. I didn't read that particular page before, I had been concentrating on the PL/pgSQL pages. As soon as I'd read that page I had the function being created. Unfortunately, I can't now get the rule to be created. Again, I can't find the relevent information in the docs, even though it's probably obvious again, so any help on why this: CREATE RULE insert_listing AS ON insert TO listing_view DO INSTEAD SELECT insert_listing_fn(NEW); gives the error: 'parser: parse error at or near ")"' would be appreciated. Using: 1) SELECT 1,2,3 2) SELECT NEW.title 3) SELECT insert_listing_fn() 4) SELECT insert_listing_fn(NEW.title) as the rule's action do not give this error, although 3 and 4 do of course give a different error since there aren't version of the function defined with those parameters. I know I could just expand the NEW record in the call to the function, giving each attribute as a parameter. However, I'd be more interested in knowing how to do this properly. -- Nigel J. Andrews Director --- Logictree Systems Limited Computer Consultants