一、游标
优缺点:
(1) 提高 sql '执行效率'
(2) 牺牲 '内存'
类型:
隐式游标
显式游标
ref游标
属性:
%found:返回一个布尔类型的值,如果游标指向的数据不为空,那么返回true,否则返回false
%notfound:和%found相反
%rowcount:它可以表示游标指向的缓冲区(结果集)的数据条数
%isopen:返回一个布尔类型的值,判断当前游标是否打开,如果是打开的返回true,否则返回false
1、显示游标
(1)游标变量的声明
cursor 游标名 is select语句;
cursor cur_emp is select * from emp;
(2)打开游标
open 游标名称;
open cur_emp;
(3)fetch into 当前游标指向下一条数据并把数据保存在一个变量中
fetch 游标变量 into 变量
fetch cur_emp into v_emp;
(4)关闭游标
close 游标名称
close cur_emp;
--使用游标打印所有员工信息
declare
--声名一个游标变量,指向所有员工的信息select * from emp;
cursor c_emp is select * from emp;
--声名一个emp%rowtype类型的变量用来保存游标中的一条记录
v_emp emp%rowtype;
begin
--打开游标
open c_emp;
--遍历游标
loop
--fetch into游标指向下一条数据,并保存数据到变量v_emp中
fetch c_emp into v_emp;
--判断游标是否还有数据,如果没有数据,就退出循环
exit when c_emp%notfound;
--把这条员工信息打印出来
dbms_output.put_line(v_emp.empno||','||v_emp.ename);
end loop;
--关闭游标
close c_emp;
end;
for循环会自