我能做到:
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 行,并且这需要继续用于下一个主键组合。等等
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 ...