我们有时采用select会返回一个结果集,使用简单的select无法得到上一行,下一行,后5行,后10行,如果想做到这一点必须使用游标,游标是存储在数据库服务器上的一个数据库查询,它不是一条select语句,他是一个结果集,有了游标就可以根据需要滚动浏览数据了
下面通过一个示例,根据岗位加工资,如果是MANAGER增加20%的工资,如果是SALESMAN增加10%的工资,其他的增加5%的工资
create or replace procedure proc_sal is cursor c is select * from emp for update; begin for v_emp in c loop if (v_emp.job = 'MANAGER') then update emp set sal = sal + sal*0.2 where current of c; elsif (v_emp.job = 'SALESMAN') then update emp set sal = sal + sal*0.1 where current of c; else update emp set sal = sal + sal*0.05 where current of c; end if;
end loop; commit; end; |
执行存储过程
exec proc_sal; |