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

标签 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 中使用作为函数参数传递的数组值?

最佳答案

使用任何:

where form.name = any (get_form_names)

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

关于sql - 在 Postgres 函数中使用 WHERE ... IN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47328955/

相关文章:

php - 使用 YIi2 更改注释时更改 PGSQL 的列架构不起作用

sql - 如何在plpgsql函数中获取当前行值

php - 如何根据一些规则进行SQL查询

sql - 如何在聚合和非聚合数据集上获得相同的 AVG() 值

mysql - 我如何扫描一个值变成空而不处理它?

postgresql - 基于postgres数据库在数据仓库中实现继承的最佳方法

database - postgresql 函数数据插入与 python

postgresql - 将行类型的所有列重置为 NULL

function - 在 postgresql 中运行函数抛出运行时错误

sql - 有用的常用 SQL 数据集?