记一个数据库游标的实例

 
  
--数据游标在数据库中起到的就是一个书签的作用,它让一个抽象的成员实例化为一个准确的对象。游标虽好,但是可不能多次使用,运行效率会降低!  

USE
[数据库名] GO Create procedure [dbo].[proc_gitcontent]//存储过程名称 as declare --声明变量(用于插入数据) @content varchar(max), @sendsuccesscount int, @sendfailecount int, @submitfailcount int, @unknown int, @status int, @userid int, @addtime datetime --定义一个游标cursor(相当于一个书签) declare content_cursor cursor for select Content,userid from tbl_sms_log group by Content,userid declare @sum int set @sum=0 create table #table ( [ID] int identity(1,1) primary key NOT NULL, [Userid] int null,--用户id [content] [varchar](max) null,--内容 [sendsuccess] [int] null,--发送成功 10 [sendfail] [int] null,--发送失败 20 [submitfail] [int] null,--提交失败 2 [unknown] [int] null,--未知数 0 [addtime] [datetime] null--添加时间 ) --打开游标 open content_cursor --读取游标(遍历赋值)(解决重复插入的bug) fetch next from content_cursor into @content,@userid while @@FETCH_STATUS=0 --返回游标执行状态(0表示返回结果成功) begin --发送成功赋值 set @sendsuccesscount=(select COUNT([status]) from tbl_sms_log where status='10' and Content=@content and UserID=@userid group by Content,userid,[status]) --发送失败赋值 set @sendfailecount=(select COUNT([status]) from tbl_sms_log where status='20' and Content=@content and UserID=@userid group by Content,userid,[status]) --提交失败赋值 set @submitfailcount=(select COUNT([status]) from tbl_sms_log where status='2' and Content=@content and UserID=@userid group by Content,userid,[status]) --未知赋值 set @unknown=(select COUNT([status]) from tbl_sms_log where status='0' and Content=@content and UserID=@userid group by Content,userid,[status])
set @addtime =GETDATE() --set @sum+=1 insert into #table(Userid,content,sendsuccess,sendfail,submitfail,unknown,addtime) values (@userid,@content,@sendsuccesscount,@sendfailecount,@submitfailcount,@unknown,@addtime) fetch next from content_cursor into @content,@userid--游标再次赋值,解决数据重复插入的bug end --关闭游标(decalre content_cursor cursor for) close content_cursor --释放资源 deallocate content_cursor begin select * from #table --关闭游标 end

 

转载于:https://www.cnblogs.com/Can-daydayup/p/8660996.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值