以数组列表作为输入的postgresql函数

postgresql function with list of arrays as input

我想要一个 postgresql 函数,它将获取数组列表并循环遍历它们。

我写了一个“hello world”类型的函数,它接受一个数组并打印它:

CREATE OR REPLACE FUNCTION print_array(_array varchar[]) RETURNS VOID 
AS $$
BEGIN
    RAISE NOTICE '%', _array;
END;
$$ LANGUAGE plpgsql;

我可以调用: SELECT print_array('{a,b,c}');

输出:

{a,b,c}

如何扩展此函数以获取 n 个数组的列表?

预期输入:SELECT print_arrays('{a,b,c}', '{foo,bar,baz}');

预期输出:

{a,b,c}

{foo,bar,baz}

我尝试按照文档中列出的示例进行操作:https://www.postgresql.org/docs/9.3/plpgsql-control-structures.html#:~:text=40.6.5.%20Looping%20Through%20Arrays 但是我不知道如何定义一个以数组列表作为输入的函数。

这使用 VARIADIC 有效:

CREATE OR REPLACE FUNCTION print_arrays(VARIADIC _arrays varchar[]) RETURNS VOID 
AS $$
DECLARE
    arr text;
BEGIN
    FOREACH arr IN ARRAY _arrays
    LOOP
        RAISE NOTICE '%', arr;
    END LOOP;
END;
$$ LANGUAGE plpgsql;