【发布时间】:2017-05-05 17:54:21
【问题描述】:
我们如何传递一个(无限数量的)行数组(即一个常量表)作为 PostgreSQL 函数的参数/参数?
这是一个想法:
CREATE TYPE foo AS (
x bigint,
y smallint,
z varchar(64)
);
CREATE OR REPLACE FUNCTION bar(bigint, foo[]) RETURNS TABLE(a bigint, x bigint, y smallint, z varchar(64)) AS
$$
SELECT $1, x, y, z FROM unnest($2);
$$
LANGUAGE SQL;
下面的函数调用有效,但有没有办法让它更短?
SELECT * FROM bar(1, ARRAY[(1,2,'body1'),(2,1,'body2')]::foo[]);
例如,我们不能删除 ::foo[] 演员表,但是有没有办法重写一些东西以便我们可以省略它?
我们应该使用可变参数吗?
【问题讨论】:
标签: postgresql function variadic-functions