【发布时间】:2021-08-05 11:00:02
【问题描述】:
我正在尝试在 PLSQL 中创建一个执行以下操作的函数:
- 从我的 BD 获取 id 列表。
- 在循环中对其进行迭代,并在 WHERE 中使用其属性之一执行 SELECT。
- 将所有循环迭代结果聚合为一个变量/任何内容,并将其作为函数的结果返回。 (连接字符串逗号分隔或任何会工作)
到目前为止我得到了什么:
CREATE FUNCTION loop(OUT str text)
RETURNS text AS
$func$
DECLARE
i text;
BEGIN
str := '';
FOR i IN
SELECT id from public.factors
LOOP
str := str || ',' || #query - ex: select name from public.factors where factors.id = i #
-- Here i would like to do a select, return a single value from it and aggregate it to the existing value in str
END LOOP;
END
$func$ LANGUAGE plpgsql;
PS:示例的逻辑是我需要做的简化版本。因此,在单个查询等中对其逻辑的任何简化都不是对原始问题的有效解决方案。
【问题讨论】:
-
如果您在循环中使用相同的表,那么我认为您不需要为此花费这么多时间。你可以
SELECT id||', '|| name from public.factors。但是您的前任只是随机的,那么如果您在示例中更改表名会很有帮助...
标签: function loops select plsql aggregate