游标的分类
隐式游标
PL/SQL隐式建立并自动管理这一游标。隐式游标也叫做SQL游标。 对于SQL游标,不能对其显式地执行OPEN、CLOSE和FETCH语句,但是可以使用游标属性从最近执行的SQL语句中获取信息。
隐式游标举例:
VARIABLE rows_deleted VARCHAR2(30)
DECLARE
v_deptno NUMBER := 20;
BEGIN
DELETE FROM emp
WHERE deptno = v_deptno;
:rows_deleted := (SQL%ROWCOUNT ||' rows deleted.');
END;
/
返回所删除行的数量
显式游标
由程序员显式说明及控制,用于从表中取出多行数据,并将多行数据一行一行单独处理。
使用游标时,select语句查询的结果可以是单条记录,多条记录,也可以是零条记录。
游标工作区中,存在着一个指针(POINTER),在初始状态它指向查询结果的首记录。
要访问查询结果的所有记录,可以通过FETCH语句,进行指针的移动来实现。
使用游标进行操作,包括定义游标、打开游标、提取数据以及关闭游标几步。
create table emp_test(
name varchar2(2000),
sal number);
create or replace procedure pro1 is
cursor pro_cousor is
select empno||ename,sal from emp; --使用||拼接
v_name varchar2(2000);
v_sal number;
begin
open pro_cousor; --分号不能省略
LOOP
exit when pro_cousor%NOTFOUND;
fetch pro_cousor into v_name,v_sal;
insert into emp_test values(v_name,v_sal);
end loop;
close pro_cousor;
end;