- 1、本文档共47页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SQL语言强化训练与T-SQL.ppt
游标的提取和滚动(二) 打开游标时,游标中当前行的位置逻辑上应位于第一行之前。这使不同的提取选项具有下列行为,如果这是打开游标后的第一次提取操作: FETCH FIRST /*提取游标中的第一行。 */ FETCH NEXT /*提取游标中的第一行。 */ FETCH PRIOR /*不提取行。 */ FETCH LAST /*提取游标中的最后一行。 */ FETCH ABSOLUTE n /*如果 n 为正整数,则提取游标中从第 1 行开始的第 n 行。如果 n 为负整数,则提取游标中的倒数的第 n 行(例如,n = -1 返回游标中的最后一行)。如果 n 为 0,则没有行被提取。 */ FETCH RELATIVE n? /*如果 n 为正数,则提取游标中的第 n 行。如果 n 为负数或 0,则没有行被提取。 */ 打开或关闭游标 打开游标: OPEN { { [ GLOBAL ] cursor_name } | cursor_variable_name } 关闭游标: CLOSE { { [ GLOBAL ] cursor_name } | cursor_variable_name } 删除游标引用: DEALLOCATE { { [ GLOBAL ] cursor_name } | @cursor_variable_name } 游标示例(一) 下面的示例打开一个游标并且提取所有的行。 DECLARE Employee_Cursor CURSOR FOR SELECT LastName, FirstName FROM Northwind.dbo.Employees WHERE LastName like B% OPEN Employee_Cursor FETCH NEXT FROM Employee_Cursor WHILE @@FETCH_STATUS = 0 BEGIN FETCH NEXT FROM Employee_Cursor END CLOSE Employee_Cursor DEALLOCATE Employee_Cursor 游标示例(二) DECLARE @au_lname varchar(40), @au_fname varchar(20) DECLARE authors_cursor CURSOR FOR SELECT au_lname, au_fname FROM authors WHERE au_lname LIKE B% ORDER BY au_lname, au_fname OPEN authors_cursor FETCH NEXT FROM authors_cursor INTO @au_lname, @au_fname WHILE @@FETCH_STATUS = 0 BEGIN PRINT Author: + @au_fname + + @au_lname FETCH NEXT FROM authors_cursor INTO @au_lname, @au_fname END CLOSE authors_cursor DEALLOCATE authors_cursor /*注意如何从游标获取字段值*/ @@FETCH_STATUS 返回被 FETCH 语句执行的最后游标的状态,而不是任何当前被连接打开的游标的状态。 返回值 描 述 0 FETCH 语句成功。 -1 FETCH 语句失败或此行不在结果集中。 -2 被提取的行不存在。 由于 @@FETCH_STATUS 对于在一个连接上的所有游标是全局性的,要小心使用 @@FETCH_STATUS 。在执行一条 FETCH 语句后,必须在对另一游标执行另一 FETCH 语句前测试 @@FETCH_STATUS 。在任何提取操作出现在此连接上前,@@FETCH_STATUS 的值没有定义。 例如,用户从一个游标执行一条 FETCH 语句,然后调用一个存储过程,此存储过程打开并处理另一个游标的结果。当控制从被调用的存储过程返回后,@@FETCH_STATUS 反映的是在存储过程中执行的最后的 FETCH 语句的结果,而不是在存储过程被调用之前的 FETCH 语句的结果。 存储过程概述 在大型数据库系统中,存储过程和触发器具有很重要的作用。无论是存储过程还是触发器,都是SQL 语句和流程控制语句的集合。就本质而言,触发器也是一种存储过程。存储过程在运算时生成执行方式,所以,以后对其再运行时其执行速度很快。SQL Se
文档评论(0)