SQL Server游标的介绍与使用

来源:脚本之家  责任编辑:小易  

给你举个例子利用游标循环更新、删除MemberAccount表中的数据DECLARE My_

游标概念

游标用于按顺序遍历结果集。但一般情况下,应尽量避免使用游标。原因:1. 游标违背了关系模型,即按集合

数据库操作中我们常常会遇到这样情况,即从某一结果集中逐一地读取一条记录。那么如何解决这种问题呢?游标为我们提供了一种极为优秀的解决方案。

关闭游标的语句很简单:CLOSE CustomerCursor; 使用Where子句子 我们可以动态

游标(cursor)是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果。

在sqlserver2000中新建一个存储过程:CREATE PROCEDURE PK_Test

每个游标区都有一个名字。用户可以用SQL语句逐一从游标中获取记录,并赋给主变量,交由主语言进一步处理.游标提供了一种对从表中检索出的数据进行操作的灵活手段,就本质而言,游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。

sql语言按照标准处理对象是集合,但有时候也需要针对单行的处理,所以就有了游标,类似C语言的指针一样

游标总是与一条SQL 查询语句相关联因为游标由结果集(可以是零条、一条或由相关的选择语句检索出的多条记录)和结果集中指向特定记录的游标位置组成。

以往带孩子都是习惯给孩子把屎把尿,因为这样会给大人规避很多因为孩子尿床而带来的麻烦。事实上,这样真的利于孩子的身心健康发展吗?随着医学和心理学的进步,现代越来越多的家长认识到这种做法的弊端。一般来说,三岁以内的宝宝肛门括约肌还没有发育好,他们的大脑也在发育过程中,3岁以内的宝宝还不具备自主控制大小便的能力。如果家长长期给宝宝把屎把尿,很容易给宝宝造成大小便的压力感。对于宝宝的后期心理发展来看,把大小便带来的直接后果就是不少成年人在面对压力或者紧张时会出现尿频甚至大小便失禁的情况。排泄作为人体的基本生理功能之一,这个过程应该是自然和舒服的。从这个层面上来讲,把屎把尿不利于宝宝的心理健康。从儿童性

当决定对结果集进行处理时,必须声明一个指向该结果集的游标。如果曾经用C 语言写过对文件进行处理的程序,那么游标就像您打开文件所得到的文件句柄一样,只要文件打开成功,该文件句柄就可代表该文件。对于游标而言,其道理是相同的。可见游标能够实现按与传统程序读取平面文件类似的方式处理来自基础表的结果集,从而把表中数据以平面文件的形式呈现给程序。

非洲斑鬣狗战斗力毋庸置疑,绝对够强悍。咬合力之大也是人尽皆知的。提问中讲的鬣狗犬齿咬合力不够,实际上有测试鬣狗犬齿咬合力的节目,一只亚成年鬣狗的犬齿咬合力也比成年花豹要强,毕竟虽然最大咬合力测试的不是犬齿,但那么大的后牙咬合力,比猫科动物里咬合力最大的美洲虎还大得多,相比之下犬齿咬合力就算再小也不可能比花豹的犬齿咬合力小。其次,鬣狗的防御力太过可怕,以前甚至有过雄狮咬住鬣狗脖子转悠了半天把鬣狗放下了,鬣狗居然毫发无损的又爬起来跑了。百度百科上也说了,鬣狗是非洲唯一敢跟狮子硬杠的动物,二哥可不是吹出来的。不过花豹的整体结构也是很有力的,拼死战斗时作为纯粹的猫科动物尖牙还能配合利爪,个人感觉同等重

我们知道关系数据库管理系统实质是面向集合的,在MS SQL SERVER 中并没有一种描述表中单一记录的表达形式,除非使用where 子句来限制只有一条记录被选中。

建议买新车,理由如下:1.如果你从没驾驶过新车的话,对于一些车况缺乏基本的认知,比如不懂得磨合新车,没摸过新车肯定是对于怎么磨合不太了解,即使看了再多理论知识也不如去亲手摸一摸。如果是二手车则不然,已经行驶几万公里,几十万公里,根本不会给你增长保养新车的经验。而且你也不知道这辆二手车当年的车主是怎么磨合,怎么使用的。2.众所周知,一些不当的行驶习惯对于爱车会造成很大的伤害。比如寒冷的东北地区,一些车主为了省时间在零下几十度的情况下停一晚车热一小会就直接驾驶走了,这是很伤车的,车也像人一样,有寿命,寿命长短完全取决于日常保养。前任车主的不良驾驶习惯造成的零部件损耗到时候你接手时完全都要你买单还不

因此我们必须借助于游标来进行面向单条记录的数据处理。由此可见,游标允许应用程序对查询语句select 返回的行结果集中每一行进行相同或不同的操作,而不是一次对整个结果集进行同一种操作;它还提供对基于游标位置而对表中数据进行删除或更新的能力;而且,正是游标把作为面向集合的数据库管理系统和面向行的程序设计两者联系起来,使两个数据处理方式能够进行沟通。

猫薄荷有叶状和粉末两种,叶状的是我们常说的猫薄荷草,其实猫咪在精神状态和健康情况良好的时候不用吃或吸薄荷的,猫薄荷本身是一种保健产品,猫咪闻或吃了以后会精神百倍,并能起到开胃的作用。一般在猫咪精神不振的时候使用会帮助猫咪尽快恢复健康。一般幼猫不适合使用猫薄荷,由于对大脑有一定的刺激作用,所以我们建议成年猫使用,也就是说至少要在8个月以上使用最好。另外将猫薄荷放在猫咪的玩具里,或做一个含有猫薄荷的玩具,这会让猫咪对这个玩具爱不释爪的。也有助于猫咪健康。对猫的影响  1.大约有50%的猫对该草叶的气味很感兴趣,喜欢抓咬,但这不表示猫必需食用猫薄荷才能维持健康。  2.事实上,猫薄荷是一种会引起幻觉

游标的使用一般是这样,个人理解:定义游标-->打开游标-->Fetch next from into --> where @@fech_status=0(这个类似C语言中的指针) -->Fetch next from into -->end -->关闭游标(close 游标名)-->Deallocate 游标

具体事例:

定义游标Test_Cursor,

declare @paraA nvarchar(50)--定义参数 declare @paraB nvarchar(50)--定义参数 declare @paraC nvarchar(50)--定义参数 declare Test_Cursor cursor local for--定义游标

打开游标 ,定义要游标的结果集

--相当于要遍历的表内容 select tableA_columnA, tableA_columnB, tableA_columnC from tableA --相当于将指针指向这个表头,指向该数据表集的第一条记录, open Test_Cursor fetch next from Test_Cursor into @paraA, @paraB, @paraC while @@fetch_status=0

循环遍历数据集中的内容,一条条做

begin insert into tableB( tableB_columnA, tableB_columnB, tableB_columnC) values( @paraA, @paraB, @paraC) fetch next from Test_Cursor into @paraA, @paraB, @paraC end

关闭和收尾回收内存

close Test_Cursor deallocate Test_Cursor

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

扩展阅读,根据您访问的内容系统为您准备了以下内容,希望对您有帮助。

sql server 中游标的作用?麻烦简单举例说明。

游标说简单点都是设置一个数据表的行指针,然后使用循环等操作数据

以下是一个示例

create procedure UpdateValue    --存储过程里面放置游标

as

begin

   

    declare UpdateCursor cursor    --声明一个游标,查询满足条件的数据

        for select 主键,SD_VAL from EQ_SD_D

       

    open UpdateCursor    --打开

       

    declare @id int,@SD_VAL nvarchar(20)  --声明一个变量,用于读取游标中的值

        fetch next from UpdateCursor into @id,@SD_VAL

       

    while @@fetch_status=0    --循环读取

        begin

        update EQ_SD_D set name=@SD_VAL where id=@id

        fetch next from UpdateCursor into @id,@SD_VAL

        end

       

    close UpdateCursor    --关闭

       

    deallocate UpdateCursor    --删除

       

end

这里是一个教学

http://www.cnblogs.com/moss_tan_jun/archive/2011/11/26/2263988.html 

追问我一直觉得对于少数数据游标能做的其他sql语句也能实现!请问你有什么好例子来说明游标的优越性吗?追答游标主要是用来完成复杂的业务逻辑

比如sqlserver中树型查询,比如如下业务点

数据表

编号 名称 父编号

1 中国 0

2 上海市 1

3 虹口区 2

4 杨浦区 2

显示结果

/中国/上海市/虹口区

/中国/上海市/杨浦区

类似这样的业务点,在sqlserver中就可能需要使用游标来做了

说游标的优越性,很难说,就比如上面的功能点,用程序代码直接读出所有表记录,然后拼接字符串的效率肯定比游标快得多。所以还是需要结合业务逻辑,具体情况具体分析。

还有数据量的问题,其实数据量越大,游标带来的性能消耗也越大,反而数据量越少游标性能越好。

sqlserver 游标用法

你有标end的位置放错误了

FETCH NEXT FROM rs INTO @a0188

END

CLOSE rs

DEALLOCATE rs更多追问追答追问按照你说的都成功了

但是 怎么能让加入的id字段自己增加呢 RIGHT('0000'+CAST(RANK() OVER(Order By a01.a0188) as Varchar),4), 单独执行语句都是对的,但是游标中 插入的ID全是0001追答你用rank()你想排名,还是你就是需要插入1,2,3,4,5.。。这样的数据?

你先查询一下,看看你的的查询语句的结果,是你想要的吗?追问别的数据都进去了 ,也合适,就是排名不合适 ,id 1,2,3,4,5 可以,最好是长度一样 比如0001,0010等追答这个是可以的,有一个函数可以,但是我忘记了。我得回去查一下那个函数的名字。追问那个函数是什么?追答ROW_NUMBER()

你这里用游标了,那就外面定义一个数字,然后在游标中+1,插入进去。

sql server中游标的作用?何时使用游标?

可以循环一笔一笔处理表里的资料,

尽量少用游标,用游标性能不太好。追问可以举个具体的例子吗?追答--申明一个游标

DECLARE MyCursor CURSOR

FOR SELECT TOP 5 FBookName,FBookCoding FROM TBookInfo

--打开一个游标

OPEN MyCursor

--循环一个游标

DECLARE @BookName nvarchar(2000),@BookCoding nvarchar(2000)

FETCH NEXT FROM MyCursor INTO @BookName,@BookCoding

WHILE @@FETCH_STATUS =0

BEGIN

print 'name'+@BookName

FETCH NEXT FROM MyCursor INTO @BookName,@BookCoding

END

--关闭游标

CLOSE MyCursor

--释放游标资源

DEALLOCATE MyCursor

如何使用SQL Server游标(一)

但是我们常常会遇到这样情况,即从某一结果集中逐一地读取一条记录。那么如何解决这种问题呢?游标为我们提供了一种极为优秀的解决方案。 1.游标和游标的优点 在数据库中,游标是一个十分重要的概念。游标提供了一种对从表中检索出的数据进行操作的灵活手段,就本质而言,游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。游标总是与一条T_SQL 选择语句相关联因为游标由结果集(可以是零条、一条或由相关的选择语句检索出的多条记录)和结果集中指向特定记录的游标位置组成。当决定对结果集进行处理时,必须声明一个指向该结果集的游标。如果曾经用 C 语言写过对文件进行处理的程序,那么游标就像您打开文件所得到的文件句柄一样,只要文件打开成功,该文件句柄就可代表该文件。对于游标而言,其道理是相同的。可见游标能够实现按与传统程序读取平面文件类似的方式处理来自基础表的结果集,从而把表中数据以平面文件的形式呈现给程序。 我们知道关系数据库管理系统实质是面向集合的,在MS SQL SERVER 中并没有一种描述表中单一记录的表达形式,除非使用where 子句来*只有一条记录被选中。因此我们必须借助于游标来进行面向单条记录的数据处理。 由此可见,游标允许应用程序对查询语句select 返回的行结果集中每一行进行相同或不同的操作,而不是一次对整个结果集进行同一种操作;它还提供对基于游标位置而对表中数据进行删除或更新的能力;而且,正是游标把作为面向集合的数据库管理系统和面向行的程序设计两者联系起来,使两个数据处理方式能够进行沟通。 2.游标种类 MS SQL SERVER支持三种类型的游标:Transact_SQL 游标,API 服务器游标和客户游标。 (1)Transact_SQL游标 Transact_SQL游标是由DECLARE CURSOR语法定义、主要用在Transact_SQL 脚本、存储过程和触发器中。Transact_SQL 游标主要用在服务器上,由从客户端发送给服务器的Transact_SQL 语句或是批处理、存储过程、触发器中的Transact_SQL 进行管理。 Transact_SQL 游标不支持提取数据块或多行数据。 (2)API 游标 API 游标支持在OLE DB, ODBC 以及DB_library 中使用游标函数,主要用在服务器上。每一次客户端应用程序调用API 游标函数,MS SQL SEVER 的OLE DB 提供者、ODBC驱动器或DB_library 的动态链接库(DLL) 都会将这些客户请求传送给服务器以对API游标进行处理。 (3)客户游标 客户游标主要是当在客户机上缓存结果集时才使用。在客户游标中,有一个缺省的结果集被用来在客户机上缓存整个结果集。客户游标仅支持静态游标而非动态游标。由于服务器游标并不支持所有的Transact-SQL 语句或批处理,所以客户游标常常仅被用作服务器游标的辅助。因为在一般情况下,服务器游标能支持绝大多数的游标操作。 由于API 游标和Transact-SQL 游标使用在服务器端,所以被称为服务器游标,也被称为后台游标,而客户端游标被称为前台游标。在本章中我们主要讲述服务器(后台)游标。select count(id) from infoselect * from info--清除所有记录

求一个SQL Server游标应用实例?

--申明一个游标

DECLARE MyCursor CURSOR

FOR SELECT TOP 5 FBookName,FBookCoding FROM TBookInfo

--打开一个游标

OPEN MyCursor

--循环一个游标

DECLARE @BookName nvarchar(2000),@BookCoding nvarchar(2000)

FETCH NEXT FROM MyCursor INTO @BookName,@BookCoding

WHILE @@FETCH_STATUS =0

BEGIN

print 'name'+@BookName

FETCH NEXT FROM MyCursor INTO @BookName,@BookCoding

END

--关闭游标

CLOSE MyCursor

--释放资源

DEALLOCATE MyCursor

游标属于行级操作 消耗很大

SQL查询是基于数据集的

所以一般查询能有 能用数据集 就用数据集 别用游标

数据量大 是性能杀手

  • 本文相关:
  • sql server 2008数据库分布式查询知识
  • sql server三种锁定模式的知识讲解
  • sql server视图的讲解
  • sql server的一些知识点定义总结
  • c#连接sql server的实现方法
  • laravel5使用freetds连接sql server的方法
  • 详解易语言操作sql server实例
  • sql server中的select会阻塞select吗
  • sqlserver2008首次登录失败问题及解决方法
  • sql server四个系统表的知识讲解
  • 索引的原理及索引建立的注意事项
  • sql server page结构深入分析
  • sqlserver数据库获取数据库信息
  • sql server 中的数据类型隐式转换问题
  • sql order by id desc/asc加一个排序的字段解决查询慢问题
  • sqlserver安装时要求cdkey的解决办法
  • sql优化经验总结
  • sqlserver 无法验证产品密匙的完美解决方案[测试通过]
  • sql效率提升之一些sql编写建议并有效利用索引
  • sqlserver中关于windows性能计数器的介绍
  • sql server 中游标的作用?麻烦简单举例说明。
  • sqlserver 游标用法
  • sql server中游标的作用?何时使用游标?
  • 如何使用SQL Server游标(一)
  • 求一个SQL Server游标应用实例?
  • sqlserver中怎样使用游标for循环
  • SQL Server中的游标是什么意思?
  • 如何使用SQL Server游标
  • sqlserver这个如何用游标来实现
  • sql server中游标是什么意思?能否用较为通俗的话解释一下?谢谢!
  • 免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved