游标-----20161219

2016-12-19  本文已影响0人  海豚的小小海
游标的概念

从数据表中提取出来的数据,以临时表的形式存放在内存中,在游标中有一个数据指针,在初始状态下指向的是首记录,利用fetch语句可以移动该指针,从而对游标中的数据进行各种操作,然后将操作结果写回数据表中。

游标的定义

cursor 游标名 is select语句;

游标的操作

打开游标
  open 游标名;
  游标提取数据时,每次只能提取一行,提取游标中的数据,使用fetch
  fetch 游标名 into 变量名1, 变量名2, ..........;或者
  fetch 游标名 into 记录型变量名;

游标的优点
使用游标的限制
游标的分类
隐式游标

执行DML SQL语句时自动创建隐式游标,与显时游标不同,不被程序打开和关闭,属性有:
  1、%found -----> SQL语句影响了一行或多行时为true
  2、%notfound -----> SQL语句没有影响时为true
  3、%rowcount -----> SQL语句影响的行数
  4、%isopen -----> 游标是否打开,始终为false
例:

begin
  update toys set toyprice=270;
  where toyid='P005';
  if SQL%found then
    dbms_output.put_line( '表已更新.......' );
  end if;
end;  //返回true 当DML语句影响一行多或多行时,返回true```
######显式游标
  用于处理返回多行的查询,使用创建好的游标需要先打开游标,语法:
  ```open 游标名;```
  打开游标的过程有两个步骤:
  (1)将符合条件的记录送入内存。
  (2)将指针指向第一条记录。
  使用结束后要关闭游标,语法:
  ```close 游标名;```
  游标提取数据时,每次只能提取一行,提取游标中的数据,使用fetch 
  ```fetch 游标名 into 变量名1, 变量名2, ..........;```或者
  ```fetch 游标名 into 记录型变量名;```
  允许使用游标删除或更新活动集中的行,声明游标时必须使用:
  ```select ... for update ```
######REF游标
  用于处理运行时才能确定的动态 SQL 查询的结果。
上一篇 下一篇

猜你喜欢

热点阅读