我是编码新手,我正在尝试使用游标和循环更新下表(而不依赖于任何行号函数)。我的表是以 id 和 model 作为列的 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;