数据库中游标的作用是什么?哪种情况需要用游标?
4个回答
展开全部
在数据库中,游标是一个十分重要的概念。游标提供了一种对从表中检索出的数据进行操作的灵活手段,就本质而言,游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。游标总是与一条SQL 选择语句相关联因为游标由结果集(可以是零条、一条或由相关的选择语句检索出的多条记录)和结果集中指向特定记录的游标位置组成。当决定对结果集进行处理时,必须声明一个指向该结果集的游标。如果曾经用 C 语言写过对文件进行处理的程序,那么游标就像您打开文件所得到的文件句柄一样,只要文件打开成功,该文件句柄就可代表该文件。对于游标而言,其道理是相同的。可见游标能够实现按与传统程序读取平面文件类似的方式处理来自基础表的结果集,从而把表中数据以平面文件的形式呈现给程序。
我们知道关系数据库管理系统实质是面向集合的,在MS SQL SERVER 中并没有一种描述表中单一记录的表达形式,除非使用where 子句来限制只有一条记录被选中。因此我们必须借助于游标来进行面向单条记录的数据处理。由此可见,游标允许应用程序对查询语句select 返回的行结果集中每一行进行相同或不同的操作,而不是一次对整个结果集进行同一种操作;它还提供对基于游标位置而对表中数据进行删除或更新的能力;而且,正是游标把作为面向集合的数据库管理系统和面向行的程序设计两者联系起来,使两个数据处理方式能够进行沟通。
在数据库开发过程中,当你检索的数据只是一条记录时,你所编写的事务语句代码往往使用SELECT INSERT 语句。但是我们常常会遇到这样情况,即从某一结果集中逐一地读取一条记录。那么如何解决这种问题呢?游标为我们提供了一种极为优秀的解决方案——那就是使用游标。
我们知道关系数据库管理系统实质是面向集合的,在MS SQL SERVER 中并没有一种描述表中单一记录的表达形式,除非使用where 子句来限制只有一条记录被选中。因此我们必须借助于游标来进行面向单条记录的数据处理。由此可见,游标允许应用程序对查询语句select 返回的行结果集中每一行进行相同或不同的操作,而不是一次对整个结果集进行同一种操作;它还提供对基于游标位置而对表中数据进行删除或更新的能力;而且,正是游标把作为面向集合的数据库管理系统和面向行的程序设计两者联系起来,使两个数据处理方式能够进行沟通。
在数据库开发过程中,当你检索的数据只是一条记录时,你所编写的事务语句代码往往使用SELECT INSERT 语句。但是我们常常会遇到这样情况,即从某一结果集中逐一地读取一条记录。那么如何解决这种问题呢?游标为我们提供了一种极为优秀的解决方案——那就是使用游标。
展开全部
对查询结果进行逐条处理时,使用游标比较方便。游标可以逐条抓取查询结果数据。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
简单来说,游标就是一个临时存储器。SQL处理数据时,总是对整个数据集打包给你,而不会逐条给你,而游标就是将SQL打包的数据集进行二次处理,使得你能够逐条对数据修改和处理。就是将机器的死脑经变的更人性化一点,满足人们的日常需要(哈哈哈,皮一下!)
至于什么时候用,哈哈就是你要单独修改、查看...某条数据时
至于什么时候用,哈哈就是你要单独修改、查看...某条数据时
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你要找出以a 为分组条件的前一笔资料
例如
SELECT * FROM YB1
4 9
1 3
1 5
3 0
4 8
4 0
declare mycur cursor for select DISTINCT T1 from YB1---- 找出定义的栏位‘这里以t1为条件’
declare @T2 CHAR---------上面的select语句查询几个栏位定义几个变数
declare @t table (T3 CHAR ,T4 CHAR)-----------查询的内容存放的表单
open mycur
fetch next from mycur into @T2
while @@fetch_status=0
begin
insert into @t----将根据条件查询出的内容放入到表@t中
select TOP 1* from YB1----查询出内容
where T1=@T2----定义几个变数这里就要等於几个阐述
ORDER BY T2
fetch next from mycur into @T2----根据定义的参数进行回圈
end
---关闭游标
close mycur
deallocate mycur
select * from @t
1 3
3 0
4 0
例如
SELECT * FROM YB1
4 9
1 3
1 5
3 0
4 8
4 0
declare mycur cursor for select DISTINCT T1 from YB1---- 找出定义的栏位‘这里以t1为条件’
declare @T2 CHAR---------上面的select语句查询几个栏位定义几个变数
declare @t table (T3 CHAR ,T4 CHAR)-----------查询的内容存放的表单
open mycur
fetch next from mycur into @T2
while @@fetch_status=0
begin
insert into @t----将根据条件查询出的内容放入到表@t中
select TOP 1* from YB1----查询出内容
where T1=@T2----定义几个变数这里就要等於几个阐述
ORDER BY T2
fetch next from mycur into @T2----根据定义的参数进行回圈
end
---关闭游标
close mycur
deallocate mycur
select * from @t
1 3
3 0
4 0
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询