游标
--游标使用方式: for的方式
declare
--声明游标 cur_emp
cursor cur_emp is select * from emp where deptno=30;
--声明 cur_emp游标类型的一个变量 c
c cur_emp%rowtype;
sumsal emp.sal%type:=0;
begin
--for去遍历提取游标中的数据
for c in cur_emp loop
sumsal:=sumsal+c.sal;
end loop;
--输出总薪资 sumsal
dbms_output.put_line('30部门的总薪资是:'||sumsal);
end;
例子:(存储过程中使用游标)
--传入指定部门,给部门下的员工加薪
create or replace procedure pr_addsal(dno emp.deptno%type)
is
begin
declare
cursor youbiao is select * from emp where deptno=dno;
a youbiao%rowtype;
begin
for a in youbiao loop
if a.sal<=900 then
update emp set sal=sal+1000 where empno=a.empno;
end if;
if a.sal>1500 then
update emp set sal=sal+600 where empno=a.empno;
end if;
if a.sal>900 and a.sal<=1500 then
update emp set sal=sal+800 where empno=a.empno;
end if;
end loop;
end;
end;
调用存储过程:
begin
pr_addsal(30);
end;
查询结果:
select * from emp where deptno=30;