我正在尝试使用Postgres每1000行更新一个特定的记录。我在寻找一个更好的方法。我的功能描述如下:

CREATE OR REPLACE FUNCTION update_row()
 RETURNS void AS
 $BODY$

 declare

 myUID integer;
 nRow integer;
 maxUid integer;

 BEGIN

 nRow:=1000;
 select max(uid_atm_inp) from tab into maxUid  where field1 = '1240200';

 loop
  if (nRow > 1000 and nRow < maxUid) then

  select uid from tab into myUID where field1 = '1240200' and uid >= nRow limit 1;

  update tab
  set field = 'xxx'
  where field1 = '1240200' and uid = myUID;

  nRow:=nRow+1000;
  end if;


 end loop;

 END; $BODY$
 LANGUAGE plpgsql VOLATILE

我怎样才能改进这个程序?我想有什么不对劲。循环不会结束,需要太多时间。

最佳答案

要在SQL中执行此任务,可以使用row_number窗口函数,只更新数字可被1000整除的行。
循环没有完成,因为循环中没有EXITRETURN

10-04 21:35