游标的理解

一、游标(用来存储多条查询数据的一种数据结构(结果集),它有一个指针,用来从上往下移动,从而达到遍历每条记录的作用)

如何编写一个游标?

1、声明游标

declare cursor cur_name

  is + 想要进行的操作;

  定义数据的方式type/rowtype;

2、打开游标

open cur_name;

3、提取数据

fetch 

4、关闭游标

eg:提取t_emp中的数据

declaer cursor cur 

  is select * from t_emp;

  r_emp t_emp%rowtype;

begin

  open cur;

  fetch cur into r_emp;

  dbms_output.put_line('id:'||r_emp.id);

  close;

end;

如何判断是否到了结果集的尾部,

oracle中,对于游标的属性,它通过属性值来判断的

1)%notfound 到了游标尾部,没有记录了,就返回true 

2)%found 用于检验游标是否成功,通常在fetch语句前使用,当游标按照条件查询一条记录是,返回true 

3)%isopen 判断游标是否打开

4)rowcount 获得影响的行数

二、游标的分类:

1、静态游标 在执行前,明确知道sql语句游标
a) 显示游标

用户自己写的sql语句,编译时能明确知道sql语句
b) 隐式游标
Dml(增、删、改、查询单条记录)会用隐式游标,该变量名不需要用户自己声明,
它由系统帮我们定义,叫sql。
影视游标的使用:通过%rowcour判断是有使用了。 使用时不要字机定义应是游标,它由系统定义
2、动态游标 在执行前不知道sql语句游标,执行时才知道sql语句的游标。
a) 强类型游标
b) 弱类型游标

三、游标的作用:(拿出结果集中的一行)

游标是映射在结果集中一行数据上的位置实体,有了游标,用户就可以访问结果集中的任意一行数据了,
将游标放置到某行后,即可对该行数据进行操作,例如提取当前行的数据等。

游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。游标充当指针的作用。
尽管游标能遍历结果中的所有行,但他一次只指向一行。

概括来讲,SQL的游标是一种临时的数据库对象,即可以用来存放在数据库表中的数据行副本,也可以指向存储在数据库中的数据行的指针。
游标提供了在逐行的基础上操作表中数据的方法。

游标的一个常见用途就是保存查询结果,以便以后使用。游标的结果集是由SELECT语句产生,如果处理过程需要重复使用一个记录集,
那么创建一次游标而重复使用若干次,比重复查询数据库要快的多。

 

posted @ 2017-03-07 10:25  struggle&小白  阅读(2955)  评论(0编辑  收藏  举报