PL / pgSQL中的BREAK语句

时间:2013-03-02 10:02:44

标签: postgresql loops plpgsql break

如何在PostgreSQL中使用break语句?我有这样的结构:

for()
 {
 for()
 {
  if(somecondition)
  break;
 }
}

根据我的理解,它应该只打破内部for循环?

2 个答案:

答案 0 :(得分:50)

PL/pgSQL中没有 BREAK

EXIT 终止循环 CONTINUE 会在循环的下一次迭代中继续 您可以将<<label>>附加到循环,并将其作为参数添加到每个命令中。然后终止/继续标记的循环。否则,它涉及内部循环 RETURN 退出该功能(因此不适用于DO声明)。

所有这些都适用于PL / pgSQL的程序元素,不是 SQL 使用全部三个的代码示例:

答案 1 :(得分:-1)

请注意:是的!即使您最终(像我一样;-))遇到类似

的问题,也需要“时间”
LOOP
  ...
  IF l_my_var = 'some condition' THEN
    -- this is ok, bla
    IF l_debug_level >= 2 THEN
      RAISE NOTICE 'debug 2: skipping a duplicate %, l_my_var;
    END IF;
    -- do something
    CONTINUE WHEN TRUE; -- https://stackoverflow.com/questions/15173194/break-statement-in-pl-pgsql
  ELSE
    -- do something
  END IF;
  ...

它看起来与IF和WHEN有点扭曲。

对编辑的注释: 可以使“继续”后面的链接更加精确:https://www.postgresql.org/docs/9.6/plpgsql-control-structures.html#AEN66440