游标的使用

1、游标是什么:

个人理解:游标相当于数据表中的一个指针,它可以一行一行的去读你的表中的数据

2、如何使用游标:

游标的使用分为五个步骤:定义游标、打开游标、使用游标、关闭游标、释放游标;

1)定义游标:定义了一个名叫test_Cursor ,将表的所有列数据赋值给了他

1 DECLARE test_Cursor CURSOR FOR SELECT * FROM dbo.tb

2)打开游标:

1 OPEN test_Cursor

3)使用游标:就通过INTO关键字将这行的值传入局部变量,并打印出来

http://images.cnblogs.com/cnblogs_com/CareySon/201111/201111011411459010.png

9

4)关闭游标

1 CLOSE test_Cursor

5)释放游标


1 DEALLOCATE test_Cursor

 3、项目中的实际运用

 1 --声明变量
 2 DECLARE @instanceId uniqueidentifier,@createuserId nvarchar(50),@stateName nvarchar(50)
 3 --声明游标
 4 declare curr cursor for 
 5 --将数据库中的表查询过滤,游标就在这个过滤的表上作用
 6 select id,CreaterUserId,StateName from WF_WorkflowInstance 
 7 where WorkflowName= '集团公司网上审批工作流'
 8 and year(PersistTime) in (2016,2017)
 9 
10 --打开游标
11 open curr 
12 --取游标中的数据,并存在临时变量中
13 fetch next from curr into @instanceId,@createuserId,@stateName
14 --循环条件,游标一般都是用这个条件,相当于取到没有数据就停了吧,你也可以自定义条件
15 while (@@fetch_status=0)
16 begin 
17 if(@stateName = 'ApprovalEnd')
18 --这里是执行了其它的存储过程,主要写你逻辑吧
19 EXEC     [EaScoreByEventParam] @instanceId ,'立项' ,@createuserId
20 if(@stateName = 'ApprovalTerminated')
21 EXEC     [EaScoreByEventParam] @instanceId ,'中止' ,@createuserId
22 --这句话很关键,相当于循环的条件,取下一条数据,不写就会出现死循环
23 fetch next from curr into @instanceId,@createuserId,@stateName
24 end 
25 close curr--关闭游标
26 
27 deallocate curr --释放游标

 

 

 

posted @ 2017-04-15 22:38  爱生活,爱代码  阅读(420)  评论(0编辑  收藏  举报