实质: 我们知道关系数据库管理系统实质是面向集合的,在MS SQL SERVER 中并没有一种描述表中单一记录的表达形式,除非使用where 子句来限制只有一条记录被选中。因此我们必须借助于游标来进行面向单条记录的数据处理。
游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。游标充当指针的作用。尽管游标能遍历结果中的所有行,但他一次只指向一行。
概括来讲,SQL的游标是一种临时的数据库对象,即可以用来存放在数据库表中的数据行副本,也可以指向存储在数据库中的数据行的指针。游标提供了在逐行的基础上操作表中数据的方法。
游标的一个常见用途就是保存查询结果,以便以后使用。游标的结果集是由SELECT语句产生,如果处理过程需要重复使用一个记录集,那么创建一次游标而重复使用若干次,比重复查询数据库要快的多。
大部分程序数据设计语言都能使用游标来检索SQL数据库中的数据,在程序中嵌入游标和在程序中嵌入SQL语句相同。
游标组成
根据以上的实例,游标包括这些组成部分:
l DECLARE语句 – 声明在代码块中使用的变量
l SETSELECT语句 – 把这些变量初始化为某个具体的值
l DECLARE CURSOR语句 – 在游标中填充将要求取的值。
注意 – DECLARE CURSOR FOR语句和SELECT语句中具有相同数量的变量。变量数目可能是一个或者很多个并且有相关联的列。
l OPEN语句 – 打开游标,开始进行数据处理
l FETCH NEXT语句 – 从游标中把具体的值分配给变量
注意: 这个逻辑用于WHILE语句之前的初始对象,接着作为WHILE语句的一部分在这个过程的每个循环中再次执行。
l WHILE语句 – 作为开始的条件,继续处理数据
l BEGIN...END语句 – 代码块的开始和结束
注意:按照不同的数据处理,可以使用不同的BEGIN...END语句
l 数据处理 – 在这个例子中,逻辑是用来把一个数据库备份到具体的路径和文件名,但是这可以只与任何DML或者管理逻辑有关。
l CLOSE语句 – 释放当前的数据和相关联的锁,但是允许游标重新打开。
l DEALLOCATE语句 – 破坏游标