DIREVISI:Seperti yang ditunjukkan dalam komentar, jawaban ini akurat ketika ditulis pada awal 2012, tetapi parameter bernama telah didukung sejak v9.2, dirilis akhir 2012.
Nama parameter hanyalah hiasan ketika fungsi Anda ada di bahasa SQL
. Anda dapat menggunakan parameter berdasarkan nama dalam prosedur tersimpan yang didefinisikan sebagai language plpgsql
.
Akibatnya, Anda harus merujuk ke argumen fungsi menggunakan $X di mana X adalah posisi ordinal dari daftar argumen fungsi (dimulai dengan 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;