ALTER PROCEDURE [dbo].[usp_syn_kmbs]
@batchid int --输入参数 --如果声明OUTPUT为输出参数
AS
BEGIN
declare @username varchar --声明变量
declare @cellphone varchar
declare @storecode varchar
declare @sid int
declare cur cursor for --定义游标
SELECT [SID],USERNAME, CELLPHONE,STORECODE FROM KMBS_SOURCE WHERE BATHCID=@batchid
open cur--打开游标
fetch next from cur into @sid,@username,@cellphone,@storecode --把提取操作的列数据放到局部变量中
while(@@fetch_status=0) --游标读取下一条数据是否成功
begin
declare @isin int
declare @autoid int
select @isin=isnull([dkr_id],0) from [KMBS_REGISTER] where [DKR_CELLPHONE]=@cellphone
if @isin=0
begin
INSERT INTO [KMBS_REGISTER]
([DKR_SID]
,[DKR_NAME]
,[DKR_NICKNAME]
,[DKR_CELLPHONE]
,[DKR_STORECODE]
,[CREATEDATE]
,[UPDATEDATE]
,[DKR_ISNEW]
,[DKR_ISFINISH]
,[DKR_CALLER],BITCHID)
values(@sid,@username,@username,@cellphone,@storecode,GETDATE(),GETDATE(),0,0,0,@batchid)
select @autoid= @@identity
select @isin=isnull(dre_id,0) from REGISTER where DRE_CELLPHONE=@cellphone
if @isin>0
begin
update [KMBS_REGISTER] set DKR_DRE_ID=@isin where DKR_ID=@autoid
end
end
else
begin
update KMBS_SOURCE set ISIN=@isin where [SID]=@sid
end
fetch next from cur into @sid,@username,@cellphone,@storecode --读取下一条数据记录放到局部变量中,变量的数目必须与游标选择列表中的列的数目一致
end
close cur--关闭游标
deallocate cur--删除游标
update KMBS_BATCH set
REPEATNUMBER=(select COUNT(*) from KMBS_SOURCE where BATCHID=@batchid and ISIN is not null)
,SUCCESSNUMBER=(select COUNT(*) from KMBS_REGISTER where BATCHID=@batchid)
,UPDATEDATE=GETDATE()
,TOTAL=(select COUNT(*) from KMBS_SOURCE where BATCHID=@batchid)
,[STATE]=2
where BATCHID=@batchid
END