set feedback off
create table t_ (a number, b varchar2(10),c number);
insert into t_ values ( 1,'one', 0);
insert into t_ values ( 2,'one', 0);
insert into t_ values ( 3,'one', 0);
insert into t_ values ( 4,'one', 0);
insert into t_ values ( 5,'one', 0);
insert into t_ values ( 6,'one', 0);
insert into t_ values ( 7,'one', 0);
insert into t_ values ( 8,'one', 0);
insert into t_ values ( 9,'one', 0);
insert into t_ values (10,'one', 0);
declare
cursor c_t is select a,b from t_ order by a;
v_a t_.a%type;
v_b t_.b%type;
begin
open c_t;
loop
fetch c_t into v_a, v_b;
exit when c_t%notfound;
update t_ set c=c+v_a where a=v_a;
end loop;
end;
/
commit;
select * from t_;
declare
cursor c_t is select a,b from t_ order by a;
v_a t_.a%type;
v_b t_.b%type;
begin
open c_t;
loop
fetch c_t into v_a, v_b;
exit when c_t%notfound;
update t_ set c=c+1 where c=v_a;
end loop;
end;
/
select * from t_;
truncate table t_;
insert into t_ values ( 1,'one', 1);
insert into t_ values ( 2,'one', 2);
insert into t_ values ( 3,'one', 3);
insert into t_ values ( 4,'one', 4);
insert into t_ values ( 5,'one', 5);
insert into t_ values ( 6,'one', 6);
insert into t_ values ( 7,'one', 7);
insert into t_ values ( 8,'one', 8);
insert into t_ values ( 9,'one', 9);
insert into t_ values (10,'one',10);
declare
cursor c_t is select a,b from t_ order by a for update;
v_a t_.a%type;
v_b t_.b%type;
begin
open c_t;
loop
fetch c_t into v_a, v_b;
exit when c_t%notfound;
update t_ set c=c+1 where current of c_t;
end loop;
end;
/
select * from t_;
truncate table t_;
insert into t_ values ( 1,'one', 1);
insert into t_ values ( 2,'one', 2);
insert into t_ values ( 3,'one', 3);
insert into t_ values ( 4,'one', 4);
insert into t_ values ( 5,'one', 5);
insert into t_ values ( 6,'one', 6);
insert into t_ values ( 7,'one', 7);
insert into t_ values ( 8,'one', 8);
insert into t_ values ( 9,'one', 9);
insert into t_ values (10,'one',10);
commit;
declare
cursor c_t is select a,b from t_ order by a;
v_a t_.a%type;
v_b t_.b%type;
begin
open c_t;
loop
fetch c_t into v_a, v_b;
exit when c_t%notfound;
update t_ set a = a+5;
dbms_output.put_line('v_a: ' || v_a);
end loop;
end;
/
select * from t_;
drop table t_;