Oracle中的游标(一)
一、游标的定义
用游标来指代一个DML SQL操作返回的结果集。即当一个对数据库的查询操作返回一组结果集时,用游标来标注这组结果集,以后通过对游标的操作来获取结果集中的数据信息。
二、游标的分类
显性游标
有明确的游标声明和操作过程。操作过程包括打开游标,取值,关闭游标。
隐性游标
没有明确的游标声明和操作过程。
1、显性游标声明
cursor 游标名称 is select语句;
2、显性游标的操作过程
打开游标:OPEN 游标名称;
提取游标数据:就是检索结果集合中的数据行,放入指定的输出变量中。
FETCH 游标名称 INTO {variable_list | record_variable };
对该记录进行处理 ,直到活动集合中没有记录。
关闭游标: CLOSE 游标名称;
应及时关闭游标,以释放该游标所占用的系统资源。
例:
Declare
v_empno number(4);
v_ename varchar2(20);
Cursor c_emp is select empno, ename from emp;
Begin
open c_emp;
loop
fetch c_emp into v_empno, v_ename;
dbms_output.put_line(v_empno ||' '||v_ename );
exit when c_emp%notfound;
end loop;
close c_emp;
End;
隐性游标
对于非查询语句,如修改、删除操作,则由ORACLE 系统自动地为这些操作设置游标并创建其工作区,这些由系统隐含创建的游标称为隐性游标,隐性游标的名字为SQL,这是由ORACLE 系统定义的。
对于隐性游标的操作,如定义、打开、取值及关闭操作,都由ORACLE 系统自动地完成,无需用户进行处理。用户只能通过隐式游标的相关属性,来完成相应的操作。
在隐性游标的工作区中,所存放的数据是与用户自定义的显示游标无关的、最新处理的一条SQL 语句所包含的数据。
隐性游标属性调用为: SQL%游标属性名
实例:
INSERT、UPDATE、DELETE 、以及由SELECT INTO所影响的行,都有隐性游标。
Declare
Begin
UPDATE EMP SET ENAME='New' WHERE EMPNO=7788;
IF SQL%NOTFOUND THEN
dbms_output.put_line('没有找到数据');
ELSIF SQL%FOUND THEN
dbms_output.put_line('更新'||SQL%ROWCOUNT||'条数据');
END IF;
End;

浙公网安备 33010602011771号