REVIDERAD:Som påpekats i kommentarerna var det här svaret korrekt när det skrevs i början av 2012, men namngivna parametrar har stöds sedan v9.2, släppt sent 2012.
Parameternamn är bara dekoration när din funktion är i språk SQL
. Du kan använda parametrarna efter namn i lagrade procedurer definierade som language plpgsql
.
Följaktligen måste du hänvisa till funktionen args med $X där X är ordningspositionen för funktionens argumentlista (som börjar med 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;