如何在PostgreSQL中使用break
语句?我有这样的结构:
for()
{
for()
{
if(somecondition)
break;
}
}
根据我的理解,它应该只打破内部for
循环?
答案 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