顾乔芝士网

持续更新的前后端开发技术栈

高级SQL之游标(sqlserver游标的使用)

【本文详细介绍了数据库中游标的基本概念和使用方法,欢迎读者朋友们阅读、转发和收藏!】

1 基本概念

1.1 定义

一般情况下,我们用SELECT这些查询语句时,都是针对的一行记录而言,如果要在查询分析器中对多行记录(即记录集)进行读取操作时,则需要使用到游标。游标分为静态游标和动态游标两种

  • 静态游标在打开时会将数据集存储在tempdb中,因此显示的数据与游标打开时的数据集保持一致,在游标打开以后对数据库的更新不会显示在游标中。
  • 动态游标在打开后会反映对数据库的更改。所有UPDATE、INSERT和DELETE操作都会显示在游标的结果集中,结果集中的行数据值、顺序和成员在每次提取时都会改变。

1.2 使用

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< 游标名>
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言