在 PLPGSQL FOR 循环中检测空集
Detection of an empty set in PLPGSQL FOR loop
有什么方法可以检测 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 但从这里开始)
如果你只想使用内置解决方案,那么你应该使用 FOUND
变量。结果不为空时为true
,结果为空时为false
。它是安全的,并且值不依赖于循环体中的语句。
有什么方法可以检测 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 但从这里开始)
如果你只想使用内置解决方案,那么你应该使用 FOUND
变量。结果不为空时为true
,结果为空时为false
。它是安全的,并且值不依赖于循环体中的语句。