РЕВИЗИРАНО:Както беше посочено в коментарите, този отговор беше точен, когато е написан в началото на 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;