游标的优点以及缺点

1.游标的优点?2.游标的缺点?3.哪些场合使用游标比较好?4.哪些场合最好不要使用游标?谢谢!... 1.游标的优点?2.游标的缺点?3.哪些场合使用游标比较好?4.哪些场合最好不要使用游标?谢谢! 展开
 我来答
梦之盼兮

2020-12-01 · TA获得超过1.5万个赞
知道大有可为答主
回答量:1.8万
采纳率:51%
帮助的人:1100万
展开全部
在数据库中,游标是一个十分重要的概念。游标提供了一种对从表中检索出的数据进行操作的灵活手段,就本质而言,游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。游标总是与一条T_SQL 选择语句相关联因为游标由结果集(可以是零条、一条或由相关的选择语句检索出的多条记录)和结果集中指向特定记录的游标位置组成。当决定对结果集进行处理时,必须声明一个指向该结果集的游标。如果曾经用 C 语言写过对文件进行处理的程序,那么游标就像您打开文件所得到的文件句柄一样,只要文件打开成功,该文件句柄就可代表该文件。对于游标而言,其道理是相同的。可见游标能够实现按与传统程序读取平面文件类似的方式处理来自基础表的结果集,从而把表中数据以平面文件的形式呈现给程序。
我们知道关系数据库管理系统实质是面向集合的,在MS SQL SERVER 中并没有一种描述表中单一记录的表达形式,除非使用where 子句来限制只有一条记录被选中。因此我们必须借助于游标来进行面向单条记录的数据处理。
由此可见,游标允许应用程序对查询语句select 返回的行结果集中每一行进行相同或不同的操作,而不是一次对整个结果集进行同一种操作;它还提供对基于游标位置而对表中数据进行删除或更新的能力;而且,正是游标把作为面向集合的数据库管理系统和面向行的程序设计两者联系起来,使两个数据处理方式能够进行沟通。
复杂和低效,是游标的最大缺点,仅仅为这两点,就足以让我们对它抱有一种谨慎的态度
IvanWxr
2012-11-07
知道答主
回答量:16
采纳率:0%
帮助的人:5.1万
展开全部
在数据库中,游标是一个十分重要的概念。游标提供了一种对从表中检索出的数据进行操作的灵活手段,就本质而言,游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。游标总是与一条T_SQL 选择语句相关联因为游标由结果集(可以是零条、一条或由相关的选择语句检索出的多条记录)和结果集中指向特定记录的游标位置组成。当决定对结果集进行处理时,必须声明一个指向该结果集的游标。如果曾经用 C 语言写过对文件进行处理的程序,那么游标就像您打开文件所得到的文件句柄一样,只要文件打开成功,该文件句柄就可代表该文件。对于游标而言,其道理是相同的。可见游标能够实现按与传统程序读取平面文件类似的方式处理来自基础表的结果集,从而把表中数据以平面文件的形式呈现给程序。

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

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

复杂和低效,是游标的最大缺点,仅仅为这两点,就足以让我们对它抱有一种谨慎的态度
适用于各种编程
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帅帅一炮灰
推荐于2016-09-21 · 知道合伙人教育行家
帅帅一炮灰
知道合伙人教育行家
采纳数:6860 获赞数:60159

向TA提问 私信TA
展开全部
优点:
1 对从表中检索出的数据进行操作非常灵活。
2 允许应用程序对查询语句select 返回的行结果集中每一行进行相同或不同的操作。
3 提供对基于游标位置而对表中数据进行删除或更新的能力。
缺点:
游标速度较慢。

游标:是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果。每个游标区都有一个名字,用户可以用SQL语句逐一从游标中获取记录,并赋给主变量,交由主语言进一步处理。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
宇宙之心眼
2012-11-07 · TA获得超过623个赞
知道小有建树答主
回答量:610
采纳率:100%
帮助的人:415万
展开全部
没有必要使用fetch,改用这样的方法,压力会小很多

declare @id int
set @id = 0

while 1=1
Begin
Select Top 1 @id=ID From 表 Where ID>@id Order By ID
if @@ROWCOUNT=0
break;
//这个地方就可以利用@id来进行后续的操作了
End

但需要注意的是,首先你的ID必须是一个唯一值,其次,那些过滤条件以及排序条件最好加上索引。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式