使用For Select Do,使用预先确定的有限行数,无法正常工作

时间:2016-12-29 19:13:17

标签: sql interbase

我在interbase中的这个过程运行得太慢了。运行需要十分之一秒,但对于250万行,它需要2整天(我猜数学加起来)

无法将客户端的数据库关闭2天,所以我决定我们一次只在一行选定的行上运行proc,这显然会花费更少的时间,每天晚上在几天的时间内完成。出于某种原因,虽然看起来它完全没有错误地运行,但proc什么也没做。

  for select custid, areacode, primarytel, PRIMARYTELID 
    from customers 
    where (primarytelid || '' is null or primarytelid || '' = '')
    and areacode is not null and areacode <> ''
    and primarytel is not null and primarytel <> ''
    rows 10
    into :custid, :AREACODE, :primarytel,:PRIMARYTELID do
  begin
    select primarytelid from PHONENUM_REFRESH(:CUSTID,:AREACODE,:PRIMARYTEL,'') into :primarytelid;
    update customers set primarytelid = :primarytelid where custid = :custid;
  end

在这个例子中,我故意只处理前10行,所以我可以监视它。但是proc什么也没做,它没有更新任何东西。它刚刚结束,没有任何改变。这个proc在没有ROWS语句的情况下运行得很好,这就是为什么我现在感到困惑。是否存在与此设置不兼容的内容?我会以不同的方式实现我想要的吗?

0 个答案:

没有答案