据我所知,在postgresql中创建用户定义函数时,必须指定参数编号和类型。像这样:
CREATE OR REPLACE FUNCTION my_add(xx INTEGER, yy INTEGER)
RETURNS INTEGER AS
$$
BEGIN
RETURN xx + yy;
END;
$$
LANGUAGE plpgsql;
select my_add(12, 34);
output: 46
现在我想创建一个可以接收动态参数的函数,其工作方式如下:
select my_add(1, 2);
output: 3
select my_add(1, 2, 3);
output: 6
select my_add(10, 4, 5, 1);
output: 20
在定义函数时,是否有一些方法可以定义动态参数?我怎样才能做到这一点?感谢。
答案 0 :(得分:1)
您正在搜索variadic parameters,例如:
CREATE FUNCTION mleast(VARIADIC arr numeric[]) RETURNS numeric AS $$
SELECT min($1[i]) FROM generate_subscripts($1, 1) g(i);
$$ LANGUAGE SQL;