一意でないフィールドを更新する必要があります。テーブルtblがあります:
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
何が間違っている可能性がありますか?ループが機能しないのはなぜですか?