小编Tha*_*yTy的帖子

PL/pgSQL 循环不更新当前时间戳/now()

我想看看 postgres 中 DO 块内的循环迭代需要多长时间。基本布局如下:

DO $$
declare v_time timestamptz;
declare i record;
begin
for i in select generate_series(1, 5) t
loop

select current_timestamp into v_time;

perform pg_sleep(i.t);
-- something done here (pg_sleep to ensure some time passes)

raise notice '%', v_time - (select current_timestamp);
-- expect negative interval from RAISE. 
end loop;
end; $$;
Run Code Online (Sandbox Code Playgroud)

但是,当我运行此命令时(已在 Postgres 13 和 9 上尝试过),我得到返回 0S 的间隔:

NOTICE:  00:00:00
NOTICE:  00:00:00
NOTICE:  00:00:00
NOTICE:  00:00:00
NOTICE:  00:00:00
DO

Query returned successfully in 15 secs …
Run Code Online (Sandbox Code Playgroud)

postgresql plpgsql

2
推荐指数
1
解决办法
968
查看次数

标签 统计

plpgsql ×1

postgresql ×1