【本文详细介绍了数据库中游标的基本概念和使用方法,欢迎读者朋友们阅读、转发和收藏】,今天小编就来聊一聊关于sql中的游标怎么用?接下来我们就一起去研究一下吧!
sql中的游标怎么用
【本文详细介绍了数据库中游标的基本概念和使用方法,欢迎读者朋友们阅读、转发和收藏!】
1 基本概念1.1 定义一般情况下,我们用SELECT这些查询语句时,都是针对的一行记录而言,如果要在查询分析器中对多行记录(即记录集)进行读取操作时,则需要使用到游标。游标分为静态游标和动态游标两种。
- 静态游标在打开时会将数据集存储在tempdb中,因此显示的数据与游标打开时的数据集保持一致,在游标打开以后对数据库的更新不会显示在游标中。
- 动态游标在打开后会反映对数据库的更改。所有UPDATE、INSERT和DELETE操作都会显示在游标的结果集中,结果集中的行数据值、顺序和成员在每次提取时都会改变。
1 、声明游标
游标在使用之前必须先声明,可用DECLARE CURSOR语句声明游标,其一般格式为:
DECLAR<游标名>[INSENSITIVE][SCROLL]CURSOR
FOR<SELECT-查询块>
[FOR{READ ONLY|UPDATE[OF<列名>[,<列名>...]]}]
说明:
- INSENSITIVE—— 使用数据的临时复制来定义游标,这时的游标实际上不允许修改的。
- SCROLL—— 可以使用任何方法来存取数据,允许更新和删除。
- FOR<SELECT- 查询块>——使用SELECT查询块来定义一个游标。
- FOR READ ONLY 或FOR UPDATE——说明是只读的游标还是可修改的游标。
2 、打开游标
使用OPEN语句的功能是打开游标,实际上就是执行相应的SELECT查询语句,将查询结果放到缓冲区。这时游标处于活动状态,游标指针指向第一条记录。其一般格式为:
OPEN<游标名>
3 、提取游标
FETCH 语句是从游标中提取特定的一行。其一般格式为:
FETCH
[[NEXT|PRIOR|FIRST|LAST|ABSOLUTE n|RELATIVE n]FROM]
<游标名>
[INTO:<主变量1>,<主变量2>...]
说明:
- NEXT—— 说明如果是在OPEN后第一次执行FETCH命令,则返回结果集的第一行,否则使游标的指针指向结果集的下一行,NEXT是默认的选项。
- PRIOR—— 返回结果集当前行的前一行。
- FIRST—— 返回结果集的第一行。
- LAST—— 返回结果集的最后一行。
- ABSOLUTE n—— 如果n是正数,返回结果集的第n行,如果n是负数,则返回结果集的倒数第n行
- RELATIVE n—— 如果n是正数,返回当前行后的第n行,如果n是负数,则返回当前行开始倒数的第n行。
- INTO—— 该语句的功能是把游标取出的当前记录送入到主变量,INTO后的主变量要与在DECLARE CURSOR中SELECT的字段相对应。
4 、关闭游标
使用CLOSE 语句关闭游标,其一般格式为:
CLOSE<游标名>
5 、释放游标
使用DEALLOCATE语句释放游标,其一般格式为:
DEALLOCATE<游标名>