|The PostgreSQL 9.0 Reference Manual - Volume 2 - Programming Guide
by The PostgreSQL Global Development Group
Paperback (6"x9"), 478 pages
RRP £14.95 ($19.95)
Sales of this book support the PostgreSQL project! Get a printed copy>>>
9.1.2 Supported Argument and Result Data Types
Functions written in PL/pgSQL can accept
as arguments any scalar or array data type supported by the server,
and they can return a result of any of these types. They can also
accept or return any composite type (row type) specified by name.
It is also possible to declare a PL/pgSQL
function as returning
record, which means that the result
is a row type whose columns are determined by specification in the
calling query, as discussed in Volume 1A: 188.8.131.52 Table Functions.
PL/pgSQL functions can be declared to accept a variable
number of arguments by using the
VARIADIC marker. This
works exactly the same way as for SQL functions, as discussed in
section 5.4.5 SQL Functions with Variable Numbers of Arguments.
PL/pgSQL functions can also be declared to accept
and return the polymorphic types
anyenum. The actual
data types handled by a polymorphic function can vary from call to
call, as discussed in section 5.2.5 Polymorphic Types.
An example is shown in section 9.3.1 Declaring Function Parameters.
PL/pgSQL functions can also be declared to return
a “set” (or table) of any data type that can be returned as
a single instance. Such a function generates its output by executing
RETURN NEXT for each desired element of the result
set, or by using
RETURN QUERY to output the result of
evaluating a query.
Finally, a PL/pgSQL function can be declared to return
void if it has no useful return value.
PL/pgSQL functions can also be declared with output
parameters in place of an explicit specification of the return type.
This does not add any fundamental capability to the language, but
it is often convenient, especially for returning multiple values.
RETURNS TABLE notation can also be used in place
|ISBN 9781906966065||The PostgreSQL 9.0 Reference Manual - Volume 2 - Programming Guide||See the print edition|