通过游标,我们可以取得返回结果集的任何一行记录,提高效率。
定义游标:
type 游标名 is ref cursor
变量名 游标名
打开游标:
open 游标变量 for select语句;
取出当前游标指向的行:
fetch 游标变量 into 其它变量;
判断游标是否指向最后记录:
游标变量%nofound
案例:编写一个pl/sql过程,要求输入部门号,并显示该部门所有员工和姓名和工资
create or replace procedure pro1(v_in_deptno in number)
is
--先定义一个游标变量类型
type emp_cursor is ref cursor;
--定义一个游标变量
v_emp_cursor emp_cursor;
--定义两个变量
v_ename emp.ename%type;
v_sal emp.sal%type;
begin
open v_emp_cursor for select ename,sal from emp where deptno=v_in_deptno;
--取出游标指向的数据
loop
fetch v_emp_cursor into v_ename,v_sal;
--游标到达最后时退出
exit when v_emp_cursor%notfound;
dbms_output.put_line('用户名 '||v_ename||' 工资 '||v_sal);
end loop;
--关闭游标
close v_emp_cursor;
end;