自己寫的存儲過程與游標結合使用的實例,與大家分享,也供自己查閱,僅供參考:
--
使用游標循環處理,刪除重復的記錄
declare
@UserID
int
declare
@UserName
varchar
(
32
)
declare
@RealName
varchar
(
32
)
declare
@UnitFlag
int
declare
@Email2
varchar
(
64
)
declare
@Mobile
varchar
(
64
)
declare
@Start
int
declare
@End
int
declare
@Type
varchar
(
16
)
declare
@IsSubscribe
bit
declare
curEmailTotalLib
cursor
for
(
select
UserID,UserName,RealName,UnitFlag,Email,Mobile,IsSubscribe
from
Task_IntermediateData)
open
curEmailTotalLib
--
打開游標
fetch
next
from
curEmailTotalLib
into
@UserID
,
@UserName
,
@RealName
,
@UnitFlag
,
@Email2
,
@Mobile
,
@IsSubscribe
while
@@fetch_status
=
0
--
獲取成功
begin
--
在郵件系統總庫中不存在此用戶ID,不存在此郵箱,并且用戶訂閱過
if
not
exists
(
select
*
from
Task_EmailTotalLib
where
UserID
=
@UserID
)
and
not
exists
(
select
*
from
Task_EmailTotalLib
where
Email
=
@Email2
)
and
@IsSubscribe
=
1
begin
set
@Start
=
charindex
(
'
@
'
,
@Email2
,
0
)
set
@End
=
charindex
(
'
.
'
,
@Email2
,
@Start
)
if
@Start
!=
0
and
@End
!=
0
begin
--
不是垃圾郵件
if
@Email2
is
not
null
and
ltrim
(
rtrim
(
@Email2
))
<>
''
begin
if
not
exists
(
select
*
from
Task_JunkEmail
where
Email
=
@Email2
)
begin
begin
try
set
@Type
=
substring
(
@Email2
,
@Start
+
1
,
@End
-
@Start
-
1
)
if
@Type
!=
'
qq
'
and
@Type
!=
'
126
'
and
@Type
!=
'
163
'
and
@Type
!=
'
sina
'
and
@Type
!=
'
sohu
'
and
@Type
!=
'
gmail
'
and
@Type
!=
'
hotmail
'
and
@Type
!=
'
yahoo
'
and
@Type
!=
'
139
'
and
@Type
!=
'
263
'
and
@Type
!=
'
yeah
'
and
@Type
!=
'
cnki
'
begin
set
@Type
=
'
extra
'
end
insert
into
Task_EmailTotalLib(UserID, UserName, RealName, Email, Mobile,
Priority, MailType, LibType, FpIsSend, CpIsSend, UpIsSend, VpIsSend, WpIsSend,
XpIsSend, YpIsSend, ZpIsSend, SendCount, SucCount, FailCount, CreditRate, IsJunkEmail,
IsSubscribe, IsUsed, Memo)
values
(
@UserID
,
@UserName
,
@RealName
,
@Email2
,
@Mobile
,
2
,
@Type
,
@UnitFlag
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
10
,
0
,
@IsSubscribe
,
0
,
''
)
end
try
begin
catch
print
'
@Email2:
'
+
@Email2
+
'
charindex(
''
@
''
, @Email2, 0)
'
+
charindex
(
'
@
'
,
@Email2
,
0
)
+
'
@Start
'
+
@Start
+
'
@End
'
+
@End
+
'
@End - @Start - 1:
'
+
@End
-
@Start
-
1
end
catch
end
end
end
end
fetch
next
from
curEmailTotalLib
into
@UserID
,
@UserName
,
@RealName
,
@UnitFlag
,
@Email2
,
@Mobile
,
@IsSubscribe
end
close
curEmailTotalLib
--
關閉游標
deallocate
curEmailTotalLib
--
釋放游標
觸發器實例:插入數據時,觸發器獲取這條數據ID,自動修改,比程序處理更方便。
Create trigger tg_url_update? on [dbo].UrlTotal for insert as
declare @getid int;?
declare @url varchar(128);
set @getid=(select id from inserted);
set @url='Test.aspx?id='+cast(@getid as varchar(50))?
update UrlTotal set
url=@url
where
id=@getid
?????? 謝謝閱讀~~
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

