- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
如有帮助,欢迎下载。
如有帮助,欢迎下载。
PAGE
PAGE 10
SQL Server教程:详细学习游标 (1)
游标( Cursor )是处理数据的一种方法,为了查看或者处理结果集中的数据,游标提供了在结果集中一次以行或者多行前进或向后浏览数据的能力。 我们可以把游标当作一个指针, 它可以指定结果中的任何位置, 然后允许用户对指定位置的数据进行处理。
游标的组成
游标包含两个部分:一个是游标结果集、一个是游标位置。
游标结果集:定义该游标得 SELECT语句返回的行的集合。游标位置:指向这个结果集某一行的当前指针。
游标的分类 游标共有 3 类:
API 服务器游标
Transaction- SQL游标
API 客户端游标。
其中前两种游标都是运行在服务器上的,所以又叫做服务器游标。
API 服务器游标
API 服务器游标主要应用在服务上,当客户端的应用程序调用 API 游标函数时, 服务器会对 API 函数进行处理。使用 API 函数和方法可以实现如下功能:
打开一个连接。
设置定义游标特征的特性或属性, API 自动将游标影射到每个结果集。
执行一个或多个 Transaction- SQL语句。
使用 API 函数或方法提取结果集中的行。
API 服务器游标包含以下四种:静态游标、动态游标、只进游标、键集驱动游标
( Primary key )
静态游标 的完整结果集将打开游标时建立的结果集存储在临时表中, (静态游标始终是只读的) 。静态游标具有以下特点: 总是按照打开游标时的原样显示结果集; 不反映数据库中作的任何修改, 也不反映对结果集行的列值所作的更改; 不显示打开游标后在数据库中新插入的行; 组成结果集的行被其他用户更新, 新的数据值不会显示在静态游标中; 但是静态游标会显示打开游标以后从数据库中删除的行。
动态游标 与静态游标相反, 当滚动游标时动态游标反映结果集中的所有更改。结果集中的行数据值、顺序和成员每次提取时都会改变。
只进游标 不支持滚动, 它只支持游标从头到尾顺序提取数据行。 注意:只进游标也反映对结果集所做的所有更改。
键集驱动游标 同时具有静态游标和动态游标的特点。 当打开游标时, 该游标中的成员以及行的顺序是固定的, 键集在游标打开时也会存储到临时工 作表中,对非键集列的数据值的更改在用户游标滚动的时候可以看见, 在游标打开以后对数据库中插入的行是不可见的,除非关闭重新打开游标。
Transaction- SQL游标
该游标是基于 Declare Cursor 语法,主要用于 Transaction- SQL脚本、存储过程以及触发器中。 Transaction- SQL游标在服务器处理由客户端发送到服务器的Transaction- SQL语句。
在存储过程或触发器中使用 Transaction- SQL游标的过程为:
声明 Transaction- SQL变量包含游标返回的数据。 为每个结果集列声明一个变量。声明足够大的变量来保存列返回的值, 并声明变量的类型为可从数据类型隐式转换得到的数据类型。
使用 Declare Cursor 语句将 Transaction- SQL游标与 Select 语句相关联。还可以利用 Declare Cursor 定义游标的只读、只进等特性。
使用 Open语句执行 Select 语句填充游标。
使用 Fetch Into 语句提取单个行, 并将每列中得数据移至指定的变量中。注意:其他 Transaction- SQL语句可以引用那些变量来访问提取的数据 值。Transaction- SQL游标不支持提取行块。
使用 Close 语句结束游标的使用。 注意:关闭游标以后, 该游标还是存在, 可以使用 Open命令打开继续使用, 只有调用 Deallocate 语句才会完全释放。
客户端游标
该游标将使用默认结果集把整个结果集高速缓存在客户端上, 所有的游标操作都在客户端的高速缓存中进行。 注意: 客户端游标只支持只进和静态游标。 不支持其他游标。
游标的生命周期
游标的生命周期包含有五个阶段:声明游标、打开游标、读取游标数据、关闭游标、释放游标。
声明游标 是为游标指定获取数据时所使用的 Select 语句,声明游标并不会检索任何数据,它只是为游标指明了相应的 Select 语句。
Declare 游标名称 Cursor 参数
声明游标的参数
Local 与 Global:Local 表示游标的作用于仅仅限于其所在的存储过程、 触发器以及批处理中、执行完毕以后游标自动释放。 Global 表示的是该游标作用域是整个会话层。 由连接执行的任何存储过程、 批处理等都可以引用该游标名称,仅在断开连接时隐性释放。
Forward_only 与 Scr
原创力文档


文档评论(0)