PostgreSQL允许函数有命名参数,可以被位置 或名称表示法调用。名称表示法对有大量参数的函数特别有用,因为它更加明确和可靠的标记了形参和实参之间的联系。在位置表示法里,一个函数调用的参数值要用与函数声明相同的顺序来写出。在名称表示法里,参数是通过名称来与函数参数相匹配的,可以以任意顺序写出。
不管用那种表示法,在函数声明时给出的有默认值的参数在调用时不必写出。但是这在名称表示法中是特别有用的,因为参数的任意组合都是可以省略的。而在位置表示法中,参数只能从右到左省略。
PostgreSQL也支持混合表示法,混合表示法结合了位置和名称表示法。因为这个原因,先写位置参数然后跟着写命名参数。
下面的例子将说明三种表示法的用法,使用下面的函数定义:
CREATE FUNCTION concat_lower_or_upper(a text, b text, uppercase boolean DEFAULT false)
RETURNS text
AS
$$
SELECT CASE
WHEN $3 THEN UPPER($1 || ' ' || $2)
ELSE LOWER($1 || ' ' || $2)
END;
$$
LANGUAGE SQL IMMUTABLE STRICT;
函数concat_lower_or_upper有两个强制的参数,a和b。此外第三个参数是一个可选参数uppercase,默认为false。 a和b输入将被串联,并且将根据uppercase 参数强制为大写或者小写。
1. 使用位置表示法
在PostgreSQL中,位置表示法是传递参数到函数