我需要更新一个非唯一字段。我有一张桌子:
create table tbl (A number(5));
tbl 中的值:1、2、2、2 .. 2。
我需要用新的非唯一值替换所有 2
新值:1、100、101、102、103 .. 我写道:
DECLARE
    sql_stmt VARCHAR2(500);
   cursor curs is 
        select A from tbl group by A having count(*)>1;
   l_row curs%ROWTYPE;
   i number(5);
   new_mail VARCHAR2(20);
BEGIN
  i:=100;
  open curs;
  loop
    fetch curs into l_row;
    exit when curs%notfound; 
    SQL_STMT := 'update tbl set a='||i||' where a='||l_row.A;
    i:=i+1;
    EXECUTE IMMEDIATE sql_stmt;
  end loop;
  close curs;
END;
/
但我得到了:
         A
----------
         1
       100
       ...
       100
有什么问题?为什么循环不起作用?