在使用存储过程中,经常回返回多个值的情况存在,那么就回使用游标,我的理解就是一个可以移动的行指针,在本行操作完成后会自动指向下一行,用以遍历所有行元素
简单实例
create or replace procedure pro_test3
is
v_ename emp.ename%type;
cursor cur_ename is select ename from emp;
begin
open cur_ename;
loop
fetch cur_ename into v_ename;
exit when cur_ename%notfound;
dbms_output.put_line(v_ename);
end loop;
close cur_ename;
end;
其中声明变量部分,emp.ename%type表示声明变量v_ename与emp表中的ename字段类型相同
cursor cur_ename is select ename from emp;表示声明一个游标,名称为cur_ename,并定义其内容为select ename from emp返回的结果集
在存储过程体中,使用游标需要先执行open cur_ename来打开游标
loop表示循环输出,也就是指针随结果下移一步
fetch cur_ename into v_ename;表示 将本次游标所指行内的数据赋值给变量v_ename;
exit when cur_ename%notfound;表示当游标指针所指行内没有数据时跳出循环,
存储过程调用
begin
pro_test3;
end;