当前位置:首页 > 芯闻号 > 充电吧
[导读]----游标   从某一结果集中逐一的取出数据--------游标分类:Transact-SQL游标,API游标,客户游标----游标的生命周期:声明游标,打开游标,读取游标数据,关闭游标,释放游标-


----游标   从某一结果集中逐一的取出数据----
----游标分类:Transact-SQL游标,API游标,客户游标

----游标的生命周期:声明游标,打开游标,读取游标数据,关闭游标,释放游标


----1. 声明游标:是为游标指定获取数据时所使用的Select语句,声明游标并不会检索任何数据
----Declare 游标名称 Cursor 参数

 DECLARE cursor_name CURSOR
 [LOCAL | GLOBAL]
 [FORWARD_ONLY | SCROLL]
 [STATIC | KEYSET | DYNAMIC]
 [READ_ONLY | SCROLL_LOCKS | OPTIMISTIC]
 FOR select_statement
 [FOR {READ ONLY | UPDATE ][OF column_list]}]


----INSENSITIVE关键字指明要为检索到的结果集建立一个临时拷贝,以后的数据从这个临时拷贝中获取。如果在后来游标处理的过程中,原有基表中数据发生了改变,那么它们对于该游标而言是不可见的。这种不敏感的游标不允许数据更改。

----SCROLL关键字指明游标可以在任意方向上滚动。所有的fetch选项(first、last、next、relative、absolute)都可以在游标中使用。如果忽略该选项,则游标只能向前滚动(next)。

----Select_statement指明SQL语句建立的结果集。Transact SQL语句COMPUTE、COMPUTE BY、FOR BROWSE和INTO在游标声明的选择语句中不允许使用。

----READ ONLY指明在游标结果集中不允许进行数据修改。
----UPDATE关键字指明游标的结果集可以修改。
----OF column_list指明结果集中可以进行修改的列。缺省情况下(使用UPDATE关键字),所有的列都可进行修改。
----LOCAL关键字指明游标是局部的,它只能在它所声明的过程中使用。
----GLOBAL关键字使得游标对于整个连接全局可见。全局的游标在连接激活的任何时候都是可用的。只有当连接结束时,游标才不再可用。
----FORWARD_ONLY指明游标只能向前滚动。
----STATIC的游标与INSENSITIVE的游标是相同的。
----KEYSET指明选取的行的顺序。SQL Server将从结果集中创建一个临时关键字集。如果对数据库的非关键字列进行了修改,则它们对游标是可见的。因为是固定的关键字集合,所以对关键字列进行修改或新插入列是不可见的。
----DYNAMIC指明游标将反映所有对结果集的修改。
----SCROLL_LOCK是为了保证游标操作的成功,而对修改或删除加锁。
----OPTIMISTIC指明哪些通过游标进行的修改或者删除将不会成功。


----标准游标
 Declare MyCursor Cursor
  for Select * from AccountInfo


----只读游标
 Declare MyCursor Cursor
  for Select * from AccountInfo
  for Read Only


----可更新游标
 Declare MyCursor Cursor
  for Select * from AccountInfo
  for update
 


----2. 打开游标:使用Open语句打开Transaction-SQL服务器游标,执行Open语句的过程就是按照Select语句惊醒填充数据
----打开游标以后游标位置在第一行
 Open MyCursor
 


----3. 读取游标数据:在打开游标以后,使用Fetch语句从Transaction-SQL服务器游标中检索特定的一行,使用Fetch
----操作可以使游标移动到下一条记录,并将游标返回的每个列的数据分别赋值给声明的本地变量
 Fetch [Next|Prior|First|Last|Absolute n|Relative n ] from MyCursor
 into @accountID,@name,@type,@money,@state


----NEXT指明从当前行的下一行取值,若第一次取值则返回第一行。默认读取选项为Next
----PRIOR指明从当前行的前一行取值。
----FIRST是结果集的第一行。
----LAST是结果集的最后一行。
----ABSOLUTE n表示结果集中的第n行,该行数同样可以通过一个局部变量传播。若n为正数,则返回从游标标头开始的第n行,
----并将返回行作为新的当前行;若n为负数,则返回从游标末尾开始的第n行,并将返回行作为新的当前行;如果n为0,则返回当前行。
----RELATIVE n表示要取出的行在当前行的前n行或后n行的位置上。如果该值为正数,则要取出的行在当前行前n行的位置上,
----如果该值为负数,则返回当前行的后n行。
----INTO @cursor_variable_name表示游标列值存储的地方的变量列表。该列表中的变量数应该与DECLARE语句中选择语句
----所使用的变量数相同。变量的数据类型也应该与被选择列的数据类型相同。直到下一次使用FETCH语句之前,变量中的
----值都会一直保持。
----每一次FETCH的执行都存储在系统变量@@fetch_status中。如果FETCH成功,则@@fetch_status被设置成0。
----@@fetch_status为-1表示已经到达了结果集的一部分(例如,在游标被打开之后,基表中的行被删除)。
----@@fetch_status可以用来构造游标处理的循环。



----4. 关闭游标:
 Close MyCursor



----5. 释放游标:
Deallocate MyCursor


----游标使用小例子
declare @ID varchar(20);
declare @name nvarchar(20);
declare @type nvarchar(20);
declare @money nvarchar(20);
declare @state nvarchar(20);
Declare MyCursor Cursor scroll
 for Select * from AccountInfo
open MyCursor
Fetch Next from MyCursor
 into @ID,@name,@type,@money,@state
 
while(@@Fetch_Status=0)
 begin
  --begin
  print @ID+', '+@name+', '+@type+', '+@money+', '+@state
  --end
  Fetch Next from MyCursor
  into @ID,@name,@type,@money,@state
 end

close MyCursor
Deallocate MyCursor


----结果:1, Eva, RMB, 5000.00, Active
----      2, Eva, Dollor, 2000.00, Active

----修改当前游标的数据
Update AccountInfo(tablename) set accountName='Jack'(columnname) Where current of MyCursor


----修改当前游标的数据
Delete from AccountInfo(tablename) Where current of MyCursor

Select @@cursor_rows  ----可以得到当前游标中存在的数据行数


----此变量为一个连接上的全局变量,因此只对应最后一次打开的游标

----参考文章: http://www.cnitblog.com/ffan/archive/2005/10/13/3276.aspx

Be the change you want to see in the world.






本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭