RÉVISÉ :comme indiqué dans les commentaires, cette réponse était exacte lorsqu'elle a été écrite au début de 2012, mais les paramètres nommés sont pris en charge depuis la v9.2, publiée fin 2012.
Les noms de paramètres ne sont qu'une décoration lorsque votre fonction est dans langage SQL
. Vous pouvez utiliser les paramètres par leur nom dans les procédures stockées définies comme language plpgsql
.
Par conséquent, vous devez vous référer aux arguments de la fonction en utilisant $X où X est la position ordinale de la liste des arguments de la fonction (commençant par 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;