代码不再起作用了

时间:2014-04-25 09:12:19

标签: sql oracle oracle11g

这段代码是写的,它工作了几个月。但是,前一天有一些Oracle更新,现在这段代码不再起作用了。基本上,此代码删除重复项。

 delete from integration where rowid in (
     select rowid from (
          select rowid, intg.*, RANK() OVER (PARTITION BY intg.pid ORDER BY intg.rowid DESC) rk
          from integration intg where pid||to_char(entry_date, 'dd.mm.yyhh:mi:ss') in (
               select pid||to_char(entry_date, 'dd.mm.yyhh:mi:ss') from integration
               group by pid, entry_date
               having count(pid) > 1
          )
     ) where rk = 1
);

当我执行此代码时,它只是继续执行。是的,没有重复,所以我应该得到空的结果,而不是坚持执行..任何想法我如何解决这个问题?

干杯!

1 个答案:

答案 0 :(得分:0)

你的sql有几个步骤。这需要多长时间才能运行?

select pid||to_char(entry_date, 'dd.mm.yyhh:mi:ss') 
from integration
group by pid, entry_date
having count(pid) > 1

这个?

select rowid, 
       intg.*, 
       RANK() OVER (PARTITION BY intg.pid ORDER BY intg.rowid DESC) rk
       from integration intg 
       where pid||to_char(entry_date, 'dd.mm.yyhh:mi:ss') in (select pid||to_char(entry_date, 'dd.mm.yyhh:mi:ss') 
                                                                 from integration
                                                                 group by pid, entry_date
                                                                 having count(pid) > 1
                                                                )

您尝试删除的数据是否可能存在其他锁定?您可以使用tools-> sessions或使用字典表(例如字典表)在pl / sql开发人员中找到有关锁的信息。 V $锁