-- 接着上篇的内容
-- 显示游标4:用游标更新数据,关键字:select ... for update
select * from emp;
declare
v_sal number;
cursor emp_cur is select * from emp where sal<1500 for update of sal; -- 更新sal字段
begin
for c in emp_cur
loop
v_sal := c.sal;
update emp set sal = v_sal*1.2 where current of emp_cur;-- 当前游标所指的行
end loop;
end;
-- REF游标:用于处理运行时动态地执行sql查询
declare
type emp_ref is ref cursor; --声明一个游标类型,此处又有不同哦
emp_cur emp_ref;-- 声明一个游标,类型是上面定义好的类型
v_emp emp%rowtype;
v_sal number := '&输入薪水:';
begin
open emp_cur for 'select * from emp where sal>:s' --此处可以是字符串,也就是可以动态传值的
using v_sal; --给占位符绑值
loop
fetch emp_cur into v_emp;
exit when emp_cur%notfound;
sopV(v_emp.ename);
end loop;
close emp_cur;
end;
/*
给游标简单的做个小结
1.游标用于处理查询结果集中的数据
2.游标类型有:隐式游标、显式游标和 REF 游标
3.隐式游标由 PL/SQL 自动定义、打开和关闭
4.显式游标用于处理返回多行的查询
5.显式游标可以删除和更新活动集中的行
6.要处理结果集中所有记录时,可使用循环游标
7.在声明 REF 游标时,不需要将 SELECT 语句与 其关联
*/