PostgreSQL - 如何使用动态参数定义用户定义的函数?

时间:2017-06-01 05:53:47

标签: postgresql user-defined-functions

据我所知,在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

在定义函数时,是否有一些方法可以定义动态参数?我怎样才能做到这一点?感谢。

1 个答案:

答案 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;