当前位置:七道奇文章资讯数据防范MSSQL防范
日期:2011-05-02 15:21:00  来源:本站整理

SQL Server游标简介与利用阐明[MSSQL防范]

赞助商链接



  本文“SQL Server游标简介与利用阐明[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

游标(Cursor)是处理数据的一种办法,为了查看大概处理后果集合的数据,游标供应了在后果集合一次以行大概多行行进或向后浏览数据的本领.我们可以把游标当作一个指针,它可以指定后果中的任何位置,然后答应用户对指定位置的数据举行处理.

1.游标的构成

游标包含两个部份:一个是游标后果集、一个是游标位置.

游标后果集:定义该游标得SELECT语句返回的行的调集.游标位置:指向这个后果集某一行的当前指针.

2.游标的分类

游标共有3类:

  1. API服务器游标
  2. Transaction-SQL游标
  3. API客户端游标.

此中前两种游标都是运行在服务器上的,所以又叫做服务器游标.

API服务器游标

API服务器游标主要利用在服务上,当客户端的利用程序调用API游标函数时,服务器会对API函数举行处理.利用API函数和办法可以实现以下功效:

  1. 翻开一个衔接.
  2. 设置定义游标特点的特点或属性,API自动将游标影射到每个后果集.
  3. 履行一个或多个Transaction-SQL语句.
  4. 利用API函数或办法提取后果集合的行.

API服务器游标包含以下四种:静态游标、动态游标、只进游标、键集驱动游标(Primary key)

  • 静态游标的完好后果集将翻开游标时成立的后果集存储在暂时表中,(静态游标始终是只读的).静态游标具有以下特点:老是按照翻开游标时的原样显示后果集;不反映数据库中作的任何改正,也不反映对后果集行的列值所作的更改;不显示翻开游标后在数据库中新插入的行;构成后果集的行被其他用户更新,新的数据值不会显示在静态游标中;但是静态游标会显示翻开游标今后从数据库中删除的行.
  • 动态游标与静态游标相反,当转动游标时动态游标反映后果集合的全部更改.后果集合的行数据值、次序和成员每次提取时城市改变.
  • 只进游标不支持转动,它只支持游标重新到尾次序提取数据行.注意:只进游标也反映对后果集所做的全部更改.
  • 键集驱动游标同时具有静态游标和动态游标的特点.当翻开游标时,该游标中的成员以及行的次序是固定的,键集在游标翻开时也会存储到暂时工作表中,对非键集列的数据值的更改在用户游标转动的时刻可以瞥见,在游标翻开今后对数据库中插入的行是不可见的,除非关闭重新翻开游标.

Transaction-SQL游标

该游标是基于Declare Cursor 语法,主要用于Transaction-SQL脚本、存储历程以及触发器中.Transaction-SQL游标在服务器处来由客户端发送到服务器的Transaction-SQL语句.

在存储历程或触发器中利用Transaction-SQL游标的历程为:

  1. 声明Transaction-SQL变量包含游标返回的数据.为每个后果集列声明一个变量.声明充足大的变量来保存列返回的值,并声明变量的范例为可从数据范例隐式转换得到的数据范例.
  2. 利用Declare Cursor语句将Transaction-SQL游标与Select语句相关联.还可以操纵Declare Cursor定义游标的只读、只进等特点. 
  3. 利用Open语句履行Select语句填充游标.
  4. 利用Fetch Into语句提取单个行,并将每列中得数据移至指定的变量中.注意:其他Transaction-SQL语句可以引用那些变量来拜候提取的数据值.Transaction-SQL游标不支持提取行块.
  5. 利用Close语句完毕游标的利用.注意:关闭游标今后,该游标还是存在,可以利用Open号令翻开持续利用,只有调用Deallocate语句才会完好释放.

客户端游标

该游标将利用默许后果集把整个后果集高速缓存在客户端上,全部的游标操作都在客户端的高速缓存中举行.注意:客户端游标只支持只进和静态游标.不支持其他游标.


  以上是“SQL Server游标简介与利用阐明[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • Windows 搭配 IIS7 PHP MySQL 环境
  • sqlserver索引的原理及索引成立的注意事项小结
  • SQL Join的一些总结(实例)
  • SQL的Join利用图解教程
  • SQL中JOIN和UNION辨别、用法及示例介绍
  • 关于SQL中CTE(公用表表达式)(Common Table Expression)的总结
  • mysql Out of memory (Needed 16777224 bytes)的错误办理
  • mysql提醒[Warning] Invalid (old?) table or database name问题的办理办法
  • mysql启用skip-name-resolve情势时呈现Warning的处理办法
  • mysql启用skip-name-resolve情势时呈现Warning的处理办法
  • MySQL Order By语法介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .