私はコーディングが初めてで、カーソルとループを使用して以下の表を更新しようとしています (行番号関数に依存していません)。私のテーブルは、列として id とモデルを持つ Cars です。問題は、重複した番号を持つ id 列を更新しようとしていることです。たとえば、テーブルは次のようになります。IDを主キーにしたい。
ID MODEL
1 Civic
1 Accord
3 Buick
3 Corolla
3 Prius
3 Saab
以下で試しましたが、すべての値が変更されるだけです。私は何を間違っていますか?このループは何をしているのですか?
DECLARE
ids number;
models varchar2 (50);
previous_id number := 0;
new_id number :=0;
cursor getRow is select * from CARS;
BEGIN
open getRow;
fetch getRow into ids, models;
previous_id := ids;
loop
fetch getRow into ids, models;
if getRow%found
then
new id := previous_id +1;
if ids = previous_id
then
update CARS
set ID = new_id
where ID = previous_id;
else
previous_id := ids;
end if;
else
exit;
end if;
end loop;
close getRow;
END;