我们知道,在存储过程中用DML语句,只能查询单条记录,如果要对多条数据进行处理,那么就要用到游标,下面以例子来说明:
如果对Scott用户下的EMP表中的用户名为CLERK的每个用户进行薪金加100的操作。
create or replace procedure P_salary
is
cursor c_emp is select * from emp where job='CLERK';
begin
--for就不用打开关闭游标
for v_row in c_emp
loop
update emp e set e.sal=e.sal+100 where e.empno=v_row.empno;
end loop;
commit;
exception
when others then
rollback;
end P_salary;
然后新建一个SQL窗口对存储过程进行调用:
--P_salary
declare
begin
P_salary;
end;
调用结束后可以用select * from emp where job='CLERK';观察薪金的变化