以数组列表作为输入的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;
我想要一个 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;