表A的 ANO字段用 xxx||xxx||xxxx||变量组成,  变量是用一个加密的过程生成的,现在编号生成出现了重复,  我想把有重复的编号重新生成,  也就是  循环修改 重复的ANO = 现在ANO的前X位 || 调用变量生成过程。

解决方案 »

  1.   

    我这边有个没写好的方法
    Declare 
    Temp varchar2(4096)
    Begin
    Loop循环(
    应在查询到的重复数据里循环,这块不会写)
    调用生成编号方法f 得到编号 temp;
    Update a set a.ano=substr(a.ano,0,10)//temp;
    Commit;
    End loop;
    End;
    大概就是这个意思
      

  2.   

    如果都这样,你只要截取后面十位然后group by 。 having count(*)>1 就行了呀
      

  3.   

    看错了你是改数据,先查出最大的一个值为多少, 然后写个游标查出重复的数据rowid(可以用分析函数查询),然后用最大的值每次循环+1 update