oracle 笔记

declare
 allsal  int ;
 cursor  sumsal is 
 select nvl(sal,0)+nvl(comm,0)
 from emp
 for update of new_sal;// 或者 for update nowait
begin 
 open sumsal;
 loop 
 fetch sumsal into allsal;
 exit when sumsal%notfound;
 update emp 
 set new_sal =allsal
 where current of sumsal;
 end loop;
 close sumsal;
 end;

 1.循环游标对表进行更新操作。

create or replace procedure emptest_a as 
v_change number;
cursor c_sum is 
select new_sal
from emp
for update of new_sal ;
begin 
open c_sum ;
loop 
fetch c_sum into v_change;
exit when c_sum%notfound ;  
update emp
set emp.new_sal =v_change*2
where current of c_sum;
end loop;
commit;
end emptest_a;
call emptest_a();
select * from emp

2.通过存储过程对一个字段更新。游标在一定得在无记录之前退出,否则无法找到下个rowid值。









你可能感兴趣的:(oracle 笔记)