- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第20 章 游标操作和应用
当使用sql查询语句查询数据后,返回的内存中的结果称为结果集。结果集在内存是一个不可分割的整体,如果需要对结果集的某个记录进行操作,就可以借助于游标来完成。 游标用在T-SQL的批、存储过程、触发器当中。
游标理解为在结果集中可以逐行移动的指针,可以指向结果集的任意位置,在实际程序开发中,一般把游标作为逐行提取结果集的手段进行使用。
游标的生命周期
游标有严格的生命周期,顺序如下;
(1)声明(DECLARE):定义游标的名称、类型和属性。
(2)打开(OPEN):打开和填充数据。
(3)提取(FETCH)数据:从结果集中读取单行的数据
(4)关闭(CLOSE):停止游标使用的查询,可以再次打开。
(5)释放(DEALLOCATE):删除游标释放资源
游标声明
语法格式:
DECLARE 游标名 [INSENSITIVE][SCROLL]CURSOR
FORSELECT查询
[FOR{READ ONLY|UPDATE[OF 列名[,列名…]]}]
参数说明:
(1)INSENSITIVE指出所声明的游标为不敏感游标,即静态游标。当省略INSENSITIVE选项时,已提交的游标基表修改和删除操作能够反映到其后的游标提取结果中。
(2)SCROLL指出该游标可以用FETCH命令里定义的所有方法来存取数据,允许删除和更新(假定没有使用INSENSITIVE选项);
(3)SELECT查询语句决定游标结果集合,但在其中不能使用COMPUTE、COMPUTE BY、FOR BROWSE和INTO等关键字。
(4)FOR READ ONLY或FOR UPDATE说明游标为只读的或可修改的。默认是可修改的。
(5)UPDATE [OF 列名[,列名…]] 定义可以修改的列。如果省略 OF 列名[,列名…],则允许修改所有列。
【例1】下面语句声明可移动游标 student_cur1:
DECLARE student_cur1 SCROLL CURSOR
FOR SELECT *
FROM student
WHERE 班级=4student_cur1:
DECLARE student_cur2 SCROLL CURSOR
FOR SELECT *
FROM student
WHERE 班级=4
FOR READ ONLY1.1.2 游标变量
游标变量声明的格式:
DECLARE @cursor_variable_name CURSOR
游标变量声明后,必须和某个游标相关联才能实现游标操作。
有两种方法建立游标和游标变量之间的关联:
第一种:先声明游标和游标变量,之后用SET语句将游标赋给游标变量。例如:
DECLARE @cur_var CURSOR
DECLARE C1 CURSOR
FOR SELECT * FROM COURSE
SET @cur_var=C1
第二种:不声明游标,直接在SET语句中将各种游标定义赋给游标变量。例如:
DECLARE @cur_var CURSOR
SET @cur_var= CURSOR
FOR SELECT * FROM COURSE
当游标变量与游标相关联之后,在Transact-SQL游标语句中就可以使用游标变量代替游标名,实现各种操作。例如:
OPEN @cur_var
11.1.3 隐式游标转换
应用程序可以请求一个游标类型,然后执行不受所请求类型的服务器游标支持的一个 Transact-SQL语句。Microsoft SQL Serve 返回一个错误,指出游标类型已经改变。
表11-1的因素可触发SQL Server将游标从一种类型隐性转换为另一种类型。
11.2 游标数据操作
11.2.1 打开游标
打开游标在声明以后,如果要从游标中读取数据必须打开
游标。打开一个Transact-SQL服务器游标使用OPEN命令。
语法格式:
OPEN {{[GLOBAL] 游标名}|游标变量}
参数说明:
(1)GLOBAL
定义游标为一全局游标。
(2)游标名
如果一个全局游标和一个局部游标都使用同一个游标名,则如果使用GLOBAL便表明其为全局游标,否则表明其为局部游标。
(3)游标变量
为定义的游标变量。当打开一个游标后时,MS SQL SERVER首先检查声明游标的语
文档评论(0)