天天看點

記一個資料庫遊标的執行個體

--資料遊标在資料庫中起到的就是一個書簽的作用,它讓一個抽象的成員執行個體化為一個準确的對象。遊标雖好,但是可不能多次使用,運作效率會降低!        
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      

作者:追逐時光者

作者簡介:一個熱愛程式設計,善于分享,喜歡學習、探索、嘗試新事物,新技術的程式猿。

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。如果該篇文章對您有幫助的話,可以點一下右下角的【♥推薦♥】,希望能夠持續的為大家帶來好的技術文章,文中可能存在描述不正确或錯誤的地方,歡迎指正、補充,不勝感激 !

繼續閱讀