ПЕРЕСМОТРЕНО: Как указано в комментариях, этот ответ был точным при написании в начале 2012 года, но именованные параметры поддерживаются начиная с версии 9.2, выпущенной в конце 2012 года.
Имена параметров являются просто украшением, когда ваша функция на языке SQL . Вы можете использовать параметры по имени в хранимых процедурах, определенных как language plpgsql
.
Следовательно, вы должны ссылаться на аргументы функции, используя $ X, где X - порядковый номер списка аргументов функции (начиная с 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;