如果我使用 pgsql 命令在文件中执行以下命令,它会抱怨需要使用“执行”调用该过程。但是当我尝试使用 perform 时,它告诉我 perform 没有定义。解决方案是什么?
create or replace function waitris() returns void as
$$
declare
cnt integer;
begin
loop
select count(*) into cnt from taskflag where taskid = 'rdfdb' and state != 2;
if cnt = 0 then
exit;
end if;
select pg_sleep(1);
end loop;
end;
$$
language plpgsql;
select waitris();
调用函数的方式没有问题。
cnt
当且仅当大于零时,您得到的错误来自执行它。你得到的错误是它清楚地表明问题出在这
SELECT pg_sleep(1);
条线上。那是你应该替换的SELECT
地方PERFORM
。否则,如果没有
CONTINUE
. 即使您添加它,循环的行为也很难遵循。你最好改用WHILE
循环。还有一个:如您所见,我将变量名更改count
为cnt
以提高可读性。