---游标循环遍历-- begin declare @id int,@temp int,@error int set @error=0 begin tran --申明事务 --业务-- update SmartPromoter set CustomerID=a.ID from SmartCustomer a,SmartPromoter b where (a.Mobile=b.Mobile or a.MobileBackup=b.Mobile) and b.CustomerID is null and len(b.Mobile)=11 declare promoter_cursor cursor for(select ID from SmartPromoter where CustomerID is null and len(Mobile)=11) --申明游标 --打开游标-- open promoter_cursor --开始循环游标变量-- fetch next from promoter_cursor into @temp while @@FETCH_STATUS=0 --返回被 FETCH语句执行的最后游标的状态-- begin insert into SmartCustomer([Name],[Gender],[Mobile],[WeChat],[CreateTime],[ChannelID],[Remark],[CreateUserID],[Deposit],[Coupon],[Point],[CurrentExploitUserID],[CurrentManagerUserID], [VisitTimes],[ConsultTimes],[IsBlacklist],[IsGreylist],[HasComplain],[HasAppointment],[WechatBindTime],[MemberCategoryID],[CashCardTotalAmount]) select Name,2,Mobile,Wechat,CreateTime,126,Remark,1,0,0,0,2,2,0,0,0,0,0,0,CreateTime,1,0 from SmartPromoter a where ID=@temp select @id = @@IDENTITY set @error= @error + @@ERROR --记录每次运行sql后是否正确,0正确 update SmartPromoter set CustomerID=@id where ID=@temp set @error= @error + @@ERROR --记录每次运行sql后是否正确,0正确 fetch next from promoter_cursor into @temp --转到下一个游标 end --业务-- insert into SmartPromoter([Name],[Mobile],[Address],[Status],[Account],[Password],[CreateTime],[Wechat],[CustomerID],[Balance]) select a.Name,a.Mobile,a.Address,1,a.Mobile,'123456',a.CreateTime,a.WeChat,a.ID,0 from SmartCustomer a where not exists (select ID from SmartPromoter b where a.ID=b.CustomerID) and LEN(Mobile)=11 if @error=0 begin commit tran --提交事务 end else begin rollback tran --回滚事务 end close promoter_cursor --关闭游标 deallocate promoter_cursor --释放游标 end