在 PLPGSQL FOR 循环中检测空集
Posted
技术标签:
【中文标题】在 PLPGSQL FOR 循环中检测空集【英文标题】:Detection of an empty set in PLPGSQL FOR loop 【发布时间】:2019-11-21 17:58:25 【问题描述】:有什么方法可以检测到 Postgres 中查询返回的集合是空的吗?
即:
FOR varname IN
select testvar from foo
LOOP
<do some stuff on the set>
END LOOP;
-- Loop finished or Set was EMPTY
IF NOT FOUND ????? THEN
<do some other stuff for empty set>
END IF;
当然,我可以在循环之前运行查询并使用NOT FOUND
或引入一个计数器,然后在循环结束时检查它是否为0
,但我想知道是否有办法避免那个。
(可能更适合 dba.SE,但从这里开始)
【问题讨论】:
是的。只需删除?????
。
@klin - 你说得对,我在源代码中检查过。
【参考方案1】:
如果您只想使用内置解决方案,那么您应该使用FOUND
变量。结果不为空时为true
,结果为空时为false
。它是安全的,并且值不依赖于循环体中的语句。
【讨论】:
以上是关于在 PLPGSQL FOR 循环中检测空集的主要内容,如果未能解决你的问题,请参考以下文章
对于表中的行,将行保存在临时表中以在 plpgsql 的选择查询中使用其数据