注:由于在学习游标的时候兼顾的学习了存储过程,所以这里针对游标的建立均在存储过程中建立。
游标是一个私有的sql工作区,简单的说就是受到影响的数据都会存在这里面,比如执行完update语句但是没有commit,那这条修改过但是没有提交的数据是放在一个虚表中的,这个虚表就是游标。
游标一共分为显示游标、隐式游标、还有带参数的游标三种,下面我们一一这三种类型的游标进行练习。
这里声明几个关键词与游标的属性。
- cursor 游标名【游标,在declare中创建游标时使用它修饰】
- fetch 游标名【表示提取游标里的数据】
- open 游标名【表示打开游标】
- close 游标名【表示关闭游标】
- 游标名%ROWCOUNT【表示受影响的数据一共有多少行】
- 游标名%NOTFOUND【返回true和false,表示是否没有数据】
- 游标名%FOUND【返回true和false,表示是否有数据】
- 游标名%ISOPEN【返回true和false,表示游标是否打开】
显示游标
需要的操作:定义游标、打开游标、提取数据、关闭游标;主要用于对查询语句的处理,对根据条件查询出来的数据进行一条一条处理。
sql窗口
Test窗口
隐式游标
系统自动创建游标,游标名是sql,主要用于直接对单行的数据增删改的操作。由于开始我们提到游标里的数据就是一些受到影响的数据但是还没有被提交,隐式游标就是直接使用dml语句后没有提交的数据。
sql窗口
Test窗口
参数游标
在定义游标时加入参数,可以配合for循环快速找到数据。隐含的执行了打开提取关闭,代码相对精简。for循环的结构请看下面的plsql的语法
sql窗口
Test窗口
使用游标时的注意事项
- 使用游标修改数据的时候最后要记得提交
- 如果是级联操作可以使用for update锁表
- 在修改时必须使用where current of 语句。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/3228.html