95992828九五至尊2

Server技术难题之游标优缺点882828九五至尊手机版

三月 13th, 2019  |  882828九五至尊手机版

分类:

1.哪些是游标
  游标实际上是一种能从包蕴多条数据记录的结果集中每趟提取一条记下的体制。游标总是与一条T_SQL选取语句相关联,因为游标由结果集(能够是零条、一条、或多条记下)和结果集中指向特定记录的游标地方组成。当控制对结果集进行拍卖时,就要声澳优(Ausnutria Hyproca)个针对性结果集的游标。
2.游标的职能
 (1)游标允许应用程序对查询语句select再次来到的行结果集中每一行进行相同或不一样的操作,而不是1回对任何结果集举行相同种操作。
 (2)提供对基于游标地点而对表中数量进行删除或更新的能力。
3.游标连串
  SQL
Server帮助三种类型的游标:Transact_SQL游标、API服务器游标、客户游标。
  (1)Transact_SQL游标
    Transact_SQL 游标是由DECLARE CUHavalSOCRUISER语法定义、主要用在Transact_SQL
脚本、积存进度和触发器中。Transact_SQL
游标重要用在服务器上,由从客户端发送给服务器的Transact_SQL
语句或是批处理、存款和储蓄进程、触发器中的Transact_SQL 举行田管。
Transact_SQL 游标不帮助提取数据块或多行数据。
  (2)API游标
     API 游标帮衬在OLE DB, ODBC 以及DB_library
中采取游标函数,首要用在服务器上。每3回客户端应用程序调用API
游标函数,MS SQL SEVE奥迪Q5 的OLE DB 提供者、ODBC驱动器或DB_library
的动态链接库(DLL)
都会将那么些客户请求传送给服务器以对API游标进行处理。
  (3)客户游标
    客户游标主如果当在客户机上缓存结果集时才使用。在客户游标中,有1个缺省的结果集被用来在客户机上缓存整个结果集。客户游标仅帮忙静态游标而非动态游标。由于服务器游标并不支持具备的Transact-SQL
语句或批处理,所以客户游标平时仅被用作服务器游标的赞助。因为在形似情状下,服务器游标能支撑绝超过一半的游标操作。
4.游标使用
  使用游标有四个主导的步调:申明游标、打开游标、提取数额、关闭游标。
  (1)评释游标
    declare myCursor cursor scroll dynamic for
    select [LoginNumber],[Password] from
[UsersInfo];/*scroll代表可自由活动游标(不然只可以前进),dynamic表示能够读写游标(不然游标只读)。那多少个都是可设可不设的*/
  (2)打开游标
    open myCursor;
  (3)提取数额
    使用fetch来取得数据,一条fetch语句一遍能够将一条记下放入程序员钦定的变量中。
    declare @loginNumber varchar(50),@password
varchar(50);/*概念变量*/
    fetch next from myCusor into
@loginNumber,@password;/*领到数据,将数据放到定义的变量中*/
    while(@@fetch_status=0)
    begin
      print ‘登录名:’+@loginNumber+’;密码:’+@password;
      fetch next from myCursor into @loginNumber,@password;
    end
    
    fetch的任何应用方法:
    –定位到钦点地点的记录
    fetch absolute 10 from myCursor into @loginNumber,@password;
    –定位到近期记录相对地点记录
    fetch relative -88 from myCursor into @loginNumber,@password;
    –定位到当下记下前一条
    fetch prior from myCursor into @loginNumber,@password;
    –定位到如今记下后一条
    fetch next from myCursor into @loginNumber,@password;
    –定位到首记下
    fetch first from myCursor into @loginNumber,@password;
    –定位到尾记录
    fetch last from myCursor into @loginNumber,@password;

MS SQL SE路虎极光VERAV4 帮助二种档次的游标:Transact_SQL 游标,API
服务器游标和客户游标。

  (4)关闭游标
    close myCursor;
    deallocate myCurosr;/*免去游标资源*/
5.游标名称的作用域
  SQL Server接济declare
cursor语句上的global和local关键字以定义游标名称的功效域。global钦点游标名称对连续是全局性的,local钦定游标名称对包罗declare
cursor语句的贮存进程、触发器或批处理是区域性的。局地游标为存款和储蓄进程和触发器中履行的游标提供了第壹的保卫安全成效。全局游标能够在宣称它们的仓库储存进度或触发器的外表被引述。
  (1)定义局地游标
882828九五至尊手机版,  declare localCursor cursor for 
  select * from tableName
  (2)定义全局游标
  declare globalCursor cursor for
  select * from tableName

(1) Transact_SQL 游标

Transact_SQL 游标是由DECLARE CU智跑SO途达 语法定义、首要用在Transact_SQL
脚本、存款和储蓄进度和触发器中。Transact_SQL
游标主要用在服务器上,由从客户端发送给服务器的Transact_SQL
语句或是批处理、存款和储蓄进度、触发器中的Transact_SQL
进行保管。Transact_SQL 游标不扶助提取块或多行。

(2) API 游标

API 游标支持在OLE DB, ODBC 以及DB_library
中使用游标函数,首要用在服务器上。每一趟客户端应用程序调用API
游标函数,MS SQL SEVE冠道 的OLE DB 提供者、ODBC驱动器或DB_library
的动态链接库(DLL) 都会将那么些客户请求传送给服务器以对API游标举行拍卖。

(3) 客户游标

客户游标首借使当在客户机上缓存结果集时才使用。在客户游标中,有一个缺省的结果集被用来在客户机上缓存整个结果集。客户游标仅扶助静态游标而非动态游标。由于服务器游标并不扶助具备的Transact-SQL
语句或批处理,所以客户游标平时仅被看成服务器游标的协助。因为在形似景观下,服务器游标能援救绝大部分的游标操作。

由于API 游标和Transact-SQL
游标使用在服务器端,所以被号称服务器游标,也被称呼后台游标,而客户端游标被称之为前台游标。

优点:

1)允许程序对由询问语句select重返的行集合中的每一行执行同一或不一致的操作,而不是对任何行集合执行同二个操作。

2)提供对基于游标地点的表中的行举办删除和更新的能力。

3)游标实际上作为面向集合的数据库管理类别(QX56DBMS)和面向行的主次设计之间的大桥,使那二种处理格局通过游标交换起来。

缺点:

拍卖大数据量时,功效低下,占用内部存储器大;
貌似的话,能利用此外措施处理数据时,最好不用使用游标,除非是当您使用while循环,子查询,一时表,表变量,自行建造函数或任何办法都心有余而力不足处理某种操作的时候,再考虑动用游标。

Your Comments

近期评论

    功能


    网站地图xml地图