ORACLE PL/SQL编程之把游标说透

  本篇主要内容如下: 

  4.1 游标概念 

  4.1.1 处理显式游标 

  4.1.2 处理隐式游标 

  4.1.3 关于 NO_DATA_FOUND 和 %NOTFOUND的区别 

  4.1.4  使用游标更新和删除数据 

  4.2 游标变量 

  4.2.1  声明游标变量 

  4.2.2  游标变量操作

  游标的使用 

  在 PL/SQL 程序中,对于处理多行记录的事务经常使用游标来实现。 

  4.1 游标概念 

  在PL/SQL块中执行SELECT、INSERT、DELETE和UPDATE语句时,ORACLE会在内存中为其分配上下文区(Context Area),即缓冲区。游标是指向该区的一个指针,或是命名一个工作区(Work Area),或是一种结构化数据类型。它为应用等量齐观提供了一种对具有多行数据查询结果集中的每一行数据分别进行单独处理的方法,是设计嵌入式SQL语句的应用程序的常用编程方式。 

   在每个用户会话中,可以同时打开多个游标,其数量由数据库初始化参数文件中的OPEN_CURSORS参数定义。 

   对于不同的SQL语句,游标的使用情况不同: 

SQL语句 

游标 

非查询语句 

隐式的 

结果是单行的查询语句 

隐式的或显示的 

结果是多行的查询语句 

显示的 

  4.1.1 处理显式游标

  1. 显式游标处理 

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

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

  格式:

CURSOR cursor_name[(parameter[, parameter]…)] 
[RETURN datatype]
IS
select_statement;
4.2 游标变量

  与游标一样,游标变量也是一个指向多行查询结果集合中当前数据行的指针。但与游标不同的是,游标变量是动态的,而游标是静态的。游标只能与指定的查询相连,即固定指向一个查询的内存处理区域,而游标变量则可与不同的查询语句相连,它可以指向不同查询语句的内存处理区域(但不能同时指向多个内存处理区域,在某一时刻只能与一个查询语句相连),只要这些查询语句的返回类型兼容即可。

  4.2.1  声明游标变量

  游标变量为一个指针,它属于参照类型,所以在声明游标变量类型之前必须先定义游标变量类型。在PL/SQL中,可以在块、子程序和包的声明区域内定义游标变量类型。

  语法格式为:

TYPE ref_type_name IS REF CURSOR
[ RETURN return_type];

it知识库ORACLE PL/SQL编程之把游标说透,转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。