HERZIEN:Zoals aangegeven in opmerkingen, was dit antwoord correct toen het begin 2012 werd geschreven, maar benoemde parameters worden ondersteund sinds v9.2, uitgebracht eind 2012.
Parameternamen zijn slechts een versiering wanneer uw functie in taal SQL
. U kunt de parameters op naam gebruiken in opgeslagen procedures gedefinieerd als language plpgsql
.
Daarom moet u verwijzen naar de functie args met $X, waarbij X de ordinale positie is van de lijst met argumenten van de functie (beginnend met 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;