REVISED:Như đã chỉ ra trong các nhận xét, câu trả lời này là chính xác khi được viết vào đầu năm 2012, nhưng các tham số được đặt tên đã được hỗ trợ kể từ phiên bản 9.2, phát hành vào cuối năm 2012
Tên tham số chỉ là trang trí khi hàm của bạn ở trong ngôn ngữ SQL
. Bạn có thể sử dụng các tham số theo tên trong các thủ tục được lưu trữ được định nghĩa là language plpgsql
.
Do đó, bạn phải tham chiếu đến hàm args bằng cách sử dụng $ X trong đó X là vị trí thứ tự của danh sách đối số của hàm (bắt đầu bằng 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;