关系数据库中的 *** 作会对整个行集产生影响。由 SELECT 语句返回的行集包括所有满足该语句 WHERE 子句中条件的行。由语句所返回的这一完整的行集被称为结果集。应用程序,特别是交互式联机应用程序,并不总能将整个结果集作为一个单元来有效地处理。这些应用程序需要一种机制以便每次处理一行或一部分行。游标就是提供这种机制的结果集扩展。
游标通过以下方式扩展结果处理:
允许定位在结果集的特定行。
从结果集的当前位置检索一行或多行。
支持对结果集中当前位置的行进行数据修改。
为由其他用户对显示在结果集中的数据库数据所做的更改提供不同级别的可见性支持。
提供脚本、存储过程和触发器中使用的访问结果集中的数据的 Transact-SQL 语句。
游标声明
DECLARE cursor_name CURSOR
[ LOCAL | GLOBAL ]
[ FORWARD_ONLY | SCROLL ]
[ STATIC | KEYSET | DYNAMIC | FAST_FORWARD ]
[ READ_ONLY | SCROLL_LOCKS | OPTIMISTIC ]
[ TYPE_WARNING ]
FOR select_statement
[ FOR UPDATE [ OF column_name [ ,n ] ] ]
举个简单的例子
使用简单游标和语法
打开该游标时所生成的结果集包括 pubs 数据库的 authors 表中的所有行和列。可以更新该游标,对该游标所做的所有更新和删除均在提取中表现出来。因为没指定 SCROLL 选项,FETCH NEXT 是唯一可用的提取选项。
DECLARE authors_cursor CURSOR
FOR SELECT FROM authors
OPEN authors_cursor
FETCH NEXT FROM authors_cursor
详细可参考sql server的帮助文件
视图是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增,改,查, *** 作,视图通常是有一个表或者多个表的行或列的子集。对视图的修改不影响基本表。它使得我们获取数据更容易,相比多表查询。
游标:是对查询出来的结果集作为一个单元来有效的处理。游标可以定在该单元中的特定行,从结果集的当前行检索一行或多行。可以对结果集当前行做修改。一般不使用游标,但是需要逐条处理数据的时候,游标显得十分重要。
一、下面是一个使用游标的简单例子,有SQL基本知识的朋友不难看懂:
--申明一个游标
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
二、提示的是,多数情况下,游标可以用临时表代替,个人建议使用临时表,因为游标对系统性能消耗要大。
--定义游标
DECLARE A CURSOR FOR
SELECT num FROM test
--打开游标
OPEN A
--定义变量
DECLARE @SalePrice2 int
--检索游标
FETCH NEXT FROM A INTO @SalePrice2
--判断结束信息
while(@@fetch_status = 0)
begin
--更新
update test set price=price+10 where num=@SalePrice2
--检索游标
FETCH NEXT from A into @SalePrice2
END
--关闭游标
close A
--释放游标
deallocate A
以上就是关于数据库中的游标是啥意思谁给具体讲讲,或者给举个具体的游标实例也占 啊,不懂游标是干啥用的全部的内容,包括:数据库中的游标是啥意思谁给具体讲讲,或者给举个具体的游标实例也占 啊,不懂游标是干啥用的、数据库中,什么叫视图游标是什么、sql sever怎么创建游标等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)