Postgresql Postgres中的迭代

Postgresql Postgres中的迭代,postgresql,Postgresql,我在PostgreSQL中准备了两个execute语句,它们都是update语句。我想将其中两个作为迭代循环运行 LOOP EXECUTE stage1 EXECUTE stage2 IF a = b then EXIT; END IF END LOOP 但是PostgreSQL不喜欢这种语法。这两个准备好的语句在单独运行时都可以很好地工作,但是它们需要一些时间,我需要多次迭代,所以我不能手动执行。还有其他方法吗?简单sql语言不支持这种构造。如果不想用PLPGSQL语法编写,

我在PostgreSQL中准备了两个execute语句,它们都是update语句。我想将其中两个作为迭代循环运行

LOOP
  EXECUTE stage1
  EXECUTE stage2
  IF a = b then EXIT;
  END IF
END LOOP

但是PostgreSQL不喜欢这种语法。这两个准备好的语句在单独运行时都可以很好地工作,但是它们需要一些时间,我需要多次迭代,所以我不能手动执行。还有其他方法吗?

简单sql语言不支持这种构造。如果不想用PLPGSQL语法编写,则必须编写一个函数:

CREATE FUNCTION some_function() RETURNS void AS $$
--your variable declarations here
BEGIN
        --your code here
END;
$$  LANGUAGE plpgsql;
您可以将RETURNS void替换为要返回的类型


阅读

您是如何运行此功能的?看起来您正在尝试使用PL/pgSQL;为此,您需要使用do块或将其放入函数中。在循环中运行语句通常是一个非常糟糕的迹象。在几乎所有情况下,将其重写为不执行任何循环或类似操作的基于集合的语句更有效。你为什么不给我们解释一下你真正的问题呢。也许有一种更好更有效的方法。嗯,stage1和stage2将是无效的,除非您在某个地方声明它们,然后为它们设置值。也许您应该显示所有相关函数,以及您得到的错误消息的确切文本?另外,您试图解决的根本问题是什么?第1阶段和第2阶段做什么,做什么?您是否正在尝试处理任何并发问题,即多个连接正在对同一个表执行操作?