自己写的一个使用游标的小例子
2007-04-19 16:38
344 查看
游标因效率低下而为人所诟病,但当我们做很多“一次性”的工作的时候,游标还是很方便地,嘿嘿。刚刚用游标解决了一个实际的问题,记录在下,以后备查,也给想用游标的同志提供一个小例子(注释都删掉了哦,大家关注里面的语法就行了):
1DECLARE product_cursor CURSOR FOR
2SELECT
3 VendeeClassID, UserID, VendeeClassCode
4FROM
5 VendeeClass order by UserID
6
7declare @UserID int
8declare @ClassCode varchar(8)
9declare @VendeeClassID int
10
11declare @globalUserID int
12declare @globalCount int
13declare @globalClassCode varchar(8)
14set @globalUserID = -1
15
16OPEN product_cursor
17FETCH NEXT FROM product_cursor INTO @VendeeClassID, @UserID, @ClassCode
18WHILE @@FETCH_STATUS = 0
19BEGIN
20 if(@globalUserID = @UserID)
21 begin
22 set @globalCount = @globalCount+1
23 if(@globalCount>9)
24 begin
25 set @globalClassCode = '01' + cast(@globalCount as varchar)
26 end
27 else
28 begin
29 set @globalClassCode = '010' + cast(@globalCount as varchar)
30 end
31 if(@ClassCode is null)
32 update VendeeClass set VendeeClassCode=@globalClassCode where VendeeClassID=@VendeeClassID
33 end
34 else
35 begin
36 set @globalUserID = @UserID
37 set @globalCount = 1;
38 if(@ClassCode is null)
39 update VendeeClass set VendeeClassCode='0101' where VendeeClassID=@VendeeClassID
40 end
41
42 FETCH NEXT FROM product_cursor INTO @VendeeClassID, @UserID, @ClassCode
43END
44
45CLOSE product_cursor
46DEALLOCATE product_cursor
1DECLARE product_cursor CURSOR FOR
2SELECT
3 VendeeClassID, UserID, VendeeClassCode
4FROM
5 VendeeClass order by UserID
6
7declare @UserID int
8declare @ClassCode varchar(8)
9declare @VendeeClassID int
10
11declare @globalUserID int
12declare @globalCount int
13declare @globalClassCode varchar(8)
14set @globalUserID = -1
15
16OPEN product_cursor
17FETCH NEXT FROM product_cursor INTO @VendeeClassID, @UserID, @ClassCode
18WHILE @@FETCH_STATUS = 0
19BEGIN
20 if(@globalUserID = @UserID)
21 begin
22 set @globalCount = @globalCount+1
23 if(@globalCount>9)
24 begin
25 set @globalClassCode = '01' + cast(@globalCount as varchar)
26 end
27 else
28 begin
29 set @globalClassCode = '010' + cast(@globalCount as varchar)
30 end
31 if(@ClassCode is null)
32 update VendeeClass set VendeeClassCode=@globalClassCode where VendeeClassID=@VendeeClassID
33 end
34 else
35 begin
36 set @globalUserID = @UserID
37 set @globalCount = 1;
38 if(@ClassCode is null)
39 update VendeeClass set VendeeClassCode='0101' where VendeeClassID=@VendeeClassID
40 end
41
42 FETCH NEXT FROM product_cursor INTO @VendeeClassID, @UserID, @ClassCode
43END
44
45CLOSE product_cursor
46DEALLOCATE product_cursor
相关文章推荐
- 一个Excel导入SQL server的例子(分别使用游标、CTE、master..spt_values实现)
- 自己写的一个使用jdbc prepare存储数据的例子
- 关于MSSQL存储过程中使用游标的一个小例子(学习)
- 使用JavaBean创建您的网上日历本 有的朋友曾经说过,如果有一个网上的日记本,或者一个网上的万年历能提醒自己到时去干什么事情就好了。其实呀,这样的日历本您自己也能做一个。不信你看下面的例子: 〈
- oracle 游标使用的一个例子
- ListView折叠展开demo(使用expendsListView第三方包和网上的一些例子都不好使,自己写了一个)
- 自己写的一个使用ADO操作ACCESS数据库的例子
- 一个Excel导入SQL server的例子(分别使用游标、CTE、master..spt_values实现)
- 从自己的程序中使用lex的一个小例子
- 一个Excel导入SQL server的例子(分别使用游标、CTE、master..spt_values实现)
- ORACLE 游标使用的一个例子
- 一个Excel导入SQL server的例子(分别使用游标、CTE、master..spt_values实现)
- 使用CLRMD编写一个自己的C#调试器
- 使用一个例子去理解CLASS,类的内容(1)
- 一个使用Pro*C实现增删改查的小例子
- 使用caffe训练并且测试一个自己的模型
- java中使用正则表达式校验的一个例子
- 如何使用epoll?一个完整的C例子
- 一个Android Socket的例子---自己加了点东西
- 一个简单的、基本的、完整的使用biblatex包的例子