REVISADO:como se señaló en los comentarios, esta respuesta era correcta cuando se escribió a principios de 2012, pero los parámetros con nombre se admiten desde la versión 9.2, lanzada a fines de 2012.
Los nombres de los parámetros son simplemente decoración cuando su función está en lenguaje SQL
. Puede usar los parámetros por nombre en procedimientos almacenados definidos como language plpgsql
.
En consecuencia, debe referirse a los argumentos de la función usando $X, donde X es la posición ordinal de la lista de argumentos de la función (comenzando con 1).
CREATE OR REPLACE FUNCTION fn_name (
n VARCHAR(32) = NULL,
OUT name varchar(32),
OUT description varchar(64) )
RETURNS setof record
AS
$$
SELECT u.name
, u.description
FROM table_a u
WHERE u.name = COALESCE($1, u.name);
$$
LANGUAGE sql;