ZMIANA:Jak wskazano w komentarzach, ta odpowiedź była dokładna, gdy została napisana na początku 2012 roku, ale nazwane parametry są obsługiwane od wersji 9.2, wydanej pod koniec 2012 roku.
Nazwy parametrów są jedynie dekoracją, gdy funkcja jest w język SQL
. Możesz użyć parametrów według nazwy w procedurach składowanych zdefiniowanych jako language plpgsql
.
W związku z tym musisz odwołać się do argumentów funkcji za pomocą $X, gdzie X jest pozycją porządkową listy argumentów funkcji (zaczynając od 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;