在Postgres函数中使用WHERE ... IN

时间:2017-11-16 11:51:09

标签: sql postgresql plpgsql

我想在Postgres中创建一个函数:

CREATE OR REPLACE FUNCTION public.getAvailableForms (
    get_form_names  TEXT[]
) RETURNS TABLE (
    id          INTEGER,
    name        TEXT,
    location    TEXT,
    created     TIMESTAMP
) AS $$
BEGIN
    RETURN QUERY
        SELECT *
          FROM form
         WHERE form.name IN get_form_names;
END;
$$  LANGUAGE plpgsql
    SECURITY DEFINER;

然而,它告诉我WHERE form.name IN get_form_names在语法上是不正确的。

我找不到任何关于如何在postgres函数调用中使用数组变量的文档。

无论如何,是否可以在WHERE ... IN中使用作为函数参数传递的数组值?

1 个答案:

答案 0 :(得分:4)

使用any

where form.name = any (get_form_names)

in将用于离散的项目列表,但any用于数组。