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

Alg*_*lor 3 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;
Run Code Online (Sandbox Code Playgroud)

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

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

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

Ham*_*one 5

使用any

where form.name = any (get_form_names)
Run Code Online (Sandbox Code Playgroud)

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

  • 我很高兴。阅读 postgresql 的数组。他们是游戏规则的改变者。 (2认同)