通过游标,我们可以取得返回结果集的任何一行记录,提高效率。
定义游标:
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;