>
> > Is it a good idea to provide an example (such as the above), or should I
> > just try and describe the behaviour?
>
> Examples are generally good things ...
OK, the attached documentation patch provides some simple examples of
use of tablename as a parameter, %ROWTYPE and %TYPE.
In the end I decided that the documentation is literally correct, but
hard to follow without any examples explicitly showing the use of a
table name as a parameter.
Andrew McMillan
user_id INTEGER;
quantity NUMERIC(5);
url VARCHAR;
+myrow tablename%ROWTYPE;
+myfield tablename.fieldname%TYPE;
+arow RECORD;
-- Some computations here
END;
' LANGUAGE 'plpgsql';
+
+
+CREATE FUNCTION use_many_fields(tablename) RETURNS TEXT AS '
+DECLARE
+ in_t ALIAS FOR $1;
+BEGIN
+ RETURN in_t.f1 || in_t.f3 || in_t.f5 || in_t.f7;
+END;
+' LANGUAGE 'plpgsql';
row could be from a view). The fields of the row type inherit the
table's field size or precision for data types such as
char(n).
+CREATE FUNCTION use_two_tables(tablename) RETURNS TEXT AS '
+DECLARE
+ in_t ALIAS FOR $1;
+ use_t table2name%ROWTYPE;
+BEGIN
+ SELECT * INTO use_t FROM table2name WHERE ... ;
+ RETURN in_t.f1 || use_t.f3 || in_t.f5 || use_t.f7;
+END;
+' LANGUAGE 'plpgsql';
+