oracle中的游标

2021/6/3 19:24:02

本文主要是介绍oracle中的游标,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

oracle中的游标分类:

显示游标,隐式游标,游标变量

游标变量又可以分为强游标和弱游标

强类型游标变量

使用强游标变量,您只能关联返回指定类型的查询 -- strong type TYPE empcurtyp IS REF CURSOR RETURN employees%ROWTYPE; -- strong cursor variable cursor1 empcurtyp;

弱类型游标变量:使用弱游标变量,可以关联任何查询

-- weak type TYPE

genericcurtyp IS REF CURSOR;

-- weak cursor variable

cursor2 genericcurtyp;

 

游标变量

TYPE type_name IS REF CURSOR [ RETURN return_type ]

预定义类型的变量:SYS_REFCURSOR

隐式游标

显式游标主要是用于对查询语句的处理,尤其是在查询结果为多条记录的情况下;而对于非查询语句,如修改、删除操作,则由ORACLE 系统自动地为这些操作设置游标并创建其工作区,这些由系统隐含创建的游标称为隐式游标,隐式游标的名字为SQL,这是由ORACLE 系统定义的。对于隐式游标的操作,如定义、打开、取值及关闭操作,都由ORACLE 系统自动地完成,无需用户进行处理。用户只能通过隐式游标的相关属性,来完成相应的操作。在隐式游标的工作区中,所存放的数据是与用户自定义的显示游标无关的、最新处理的一条SQL 语句所包含的数据。

格式调用为: SQL%

SQL%ISOPEN

 

FALSE

FALSE

FALSE

FALSE

SQL%FOUND

TRUE

有结果

 

成功

成功

SQL%FOUND

FALSE

没结果

 

失败

失败

SQL%NOTFUOND

TRUE

没结果

 

失败

失败

SQL%NOTFOUND

FALSE

有结果

 

成功

失败

DECLARE
    V_deptno department_id%TYPE :=&p_deptno;
BEGIN
    DELETE FROM employees WHERE department_id=v_deptno;
    IF SQL%NOTFOUND THEN
        DELETE FROM departments WHERE department_id=v_deptno;
    END IF;
END;

  

显示游标

显式游标处理需四个 PL/SQL步骤:

1.定义/声明游标:就是定义一个游标名,以及与其相对应的SELECT 语句

CURSOR cursor_name[(parameter[, parameter]…)] 
           [RETURN datatype]
    IS 
        select_statement;

2.打开游标:就是执行游标所对应的SELECT 语句,将其查询结果放入工作区,并且指针指向工作区的首部,标识游标结果集合。如果游标查询语句中带有FOR UPDATE选项,OPEN 语句还将锁定数据库表中游标结果集合对应的数据行。
OPEN cursor_name[([parameter =>] value[, [parameter =>] value]…)];

提取游标数据:就是检索结果集合中的数据行,放入指定的输出变量中。 

FETCH cursor_name INTO {variable_list | record_variable };

关闭游标 CLOSE cursor_name;

 

 

 



这篇关于oracle中的游标的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程