declare @rece varchar(500) declare @MsgTitle varchar(200) declare @mmsLoc varchar(500) declare M cursor --创建游标 M static for select MsgTitle,MMSContentLocation from UV_MsgInbox t3 where t3.MsgType=1 and t3.MsgArrivedTime >= dateadd(minute,-5,getdate()) and t3.sender in (select 号码 from Result group by 号码) open M --打开游标 fetch next from M into @MsgTitle,@mmsLoc set @mmsLoc=substring(@mmsLoc,0,charindex(',',@mmsLoc)) while(@@fetch_status=0) begin declare sm cursor static for select a from dbo.fn_split(@receiver,',') open sm fetch next from sm into @rece while(@@fetch_status=0) begin if not exists(select * from MSG_Sentbox where msgTitle=@sentContent and MMSContentLocation=@mmsLoc and Receiver= @str and ActualSendTime >=dateadd(minute,-10,getdate())) insert into dbo.MSG_Outbox (Receiver,MsgType,MsgTitle,MMSContentLocation,SendTime) values(@rece,1,@MsgTitle,@mmsLoc,getDate()) fetch next from sm into @rece end close sm deallocate sm fetch next from M into @MsgTitle,@mmsLoc set @mmsLoc=substring(@mmsLoc,0,charindex(',',@mmsLoc)) end close M deallocate M end双重循环,就是在第二个循环,循环第一条数据的时候 (也就是我判断的是if not exists,其实循环第一条数据的时候是 exists的)就直接跳出循环了,后面还有几条数据都没有循环了 就直接停止执行整个存储过程了
declare @rece varchar(500)
declare @MsgTitle varchar(200)
declare @mmsLoc varchar(500)
declare M cursor --创建游标 M
static
for select MsgTitle,MMSContentLocation from UV_MsgInbox t3 where t3.MsgType=1 and t3.MsgArrivedTime >= dateadd(minute,-5,getdate()) and t3.sender in (select 号码 from Result group by 号码)
open M --打开游标
fetch next from M into @MsgTitle,@mmsLoc
set @mmsLoc=substring(@mmsLoc,0,charindex(',',@mmsLoc))
while(@@fetch_status=0)
begin
declare sm cursor
static
for select a from dbo.fn_split(@receiver,',')
open sm
fetch next from sm into @rece
while(@@fetch_status=0)
begin
if not exists(select * from MSG_Sentbox where msgTitle=@sentContent and MMSContentLocation=@mmsLoc
and Receiver= @str and ActualSendTime >=dateadd(minute,-10,getdate()))
insert into dbo.MSG_Outbox (Receiver,MsgType,MsgTitle,MMSContentLocation,SendTime) values(@rece,1,@MsgTitle,@mmsLoc,getDate())
fetch next from sm into @rece
end
close sm
deallocate sm
fetch next from M into @MsgTitle,@mmsLoc
set @mmsLoc=substring(@mmsLoc,0,charindex(',',@mmsLoc))
end
close M
deallocate M
end双重循环,就是在第二个循环,循环第一条数据的时候 (也就是我判断的是if not exists,其实循环第一条数据的时候是 exists的)就直接跳出循环了,后面还有几条数据都没有循环了 就直接停止执行整个存储过程了