如何将动态值传递给FOR循环?

问题描述 投票:0回答:1

我能做到:

for i in 1 .. (select pays from schema.table_name where pk_id='12' and pk2_id='123')

但它只适用于这一特定行。如何对表中的所有行执行此操作?

在没有

WHERE
条件的情况下通过时出现以下错误:

ERROR:  more than one row returned by a subquery used as an expression

我正在使用

FOR
循环来迭代已完成的付款次数。例如,如果付款次数为 50,则对于与其他字段的主键组合,应迭代 50 行,并且这需要继续用于下一个主键组合。等等

postgresql for-loop plpgsql
1个回答
0
投票

PL/pgSQL 有 两种不同的语法变体

FOR
循环

似乎你想将两者都嵌套:

DO
$do$
DECLARE
   _pays int; -- matching data type
   i int;
BEGIN
   --  do it for all "pays" in table table_name
   FOR _pays IN (SELECT pays FROM schema.table_name ORDER BY 1)
   LOOP
      --  do it "pays" times
      FOR i IN 1 .. _pays
      LOOP
         RAISE NOTICE '_pays: %; i; %', _pays, i;  -- or whatever ...
      END LOOP;  -- inner loop
   END LOOP;  -- outer loop
END
$do$

相关:

也就是说,通常情况下,您可以用单个 SQL 查询替换整个 shebang ...

© www.soinside.com 2019 - 2024. All rights reserved.