我們如何傳遞一個(無限量的)行數組(即一個常量表)作爲PostgreSQL函數的參數/參數?如何將多行傳遞給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[]
投,但有沒有辦法改寫的東西,使我們可以忽略它?
我們應該使用variatic參數嗎?