游标批量同步数据

--SQL批量同步商务数据交易平台
--by ltr
 
--操作提示:运行此脚本前请记得备份您要操作的数据库
--实现功能:执行脚本后数据库中YW_OrderInfo表的记录跟商务的BS_orderInfor记录数相同
 
--脚本代码开始
declare @OrderID nvarchar(500) -- 游标中取出的 交易平台id
declare @OrderNumber nvarchar(500)--游标中取出的  任务单号
declare @SalesMan nvarchar(500)--游标中取出的   销售员 业务员卡号
declare @SwBumen nvarchar(500)  --游标中取出的  商务部门,小组号
declare @OrderSource nvarchar(500)--游标中取出的  正常 = 1,无信息员有业务员 = 2,商务回头客 = 3,主案回头客 = 4,工程回头客 = 5,电子商务 = 6
declare @CreateTime nvarchar(500)  --游标中取出的  提交时间
SET @CreateTime='2016-03-14'
declare @IsMessager nvarchar(500)--游标中取出的 是否有信息员 1-有信息员,0-无信息员
declare @Memo nvarchar(500) -- '2016-03-14商务导入主案不存在的订单'
SET @Memo='2016-03-14商务导入主案不存在的订单'

 
--声明游标,这里一定要保证去重,否则会重复插入。
declare mycursor1 cursor for (SELECT DISTINCT OrderNumber,SalesMan,SwBumen,OrderSource,IsMessager from master..YW_OrderInfo0310)
 --打开游标
open mycursor1 
--从游标里取出数据赋值到我们刚才声明的变量中
fetch next from mycursor1 into @OrderNumber,@SalesMan,@SwBumen,@OrderSource,@IsMessager
--如果游标执行成功  
while (@@fetch_status=0) 
begin 
    --构造id 
    exec p_getMaxID 'YW_OrderInfo', 'admin', @OrderID OUTPUT
    PRINT @OrderID 

    EXEC('INSERT INTO YW_OrderInfo(OrderID,OrderNumber,SalesMan,SwBumen,OrderSource,CreateTime,IsMessager,Memo)
    VALUES('''+@OrderID+''','''+@OrderNumber+''','''+@SalesMan+''','''+@SwBumen+''','''+@OrderSource+''','''+@CreateTime+''','''+@IsMessager+''','''+@Memo+''')')

 --用游标去取下一条记录
    fetch next from mycursor1 into @OrderNumber,@SalesMan,@SwBumen,@OrderSource,@IsMessager
end 
--关闭游标
close mycursor1 
--撤销游标
deallocate mycursor1
--脚本代码结束



----待导入的商务数据是否有重复
--SELECT * FROM master..YW_OrderInfo0310 WHERE ordernumber IN (
--SELECT ordernumber FROM (
--SELECT COUNT(1) tot,ordernumber  FROM master..YW_OrderInfo0310 GROUP BY OrderNumber) t WHERE  tot>1 ) AND LEN(ordernumber)>0


--SELECT TOP 1 orderNumber,u.u_kahao,u.u_bumen_zi
--,case when o.NewOrderType=1 then 3
-- when o.NewOrderType=2 then 4
--  when o.NewOrderType=3 then 5
--   when o.NewOrderType=4 then 6
--    when o.NewOrderType=0 and b.ID is not null then 1
--     when o.NewOrderType=0 then 2 end OrderSource,o.decorateTime
--     ,case when o.NewOrderType=0 and b.ID is not null then 1 when o.NewOrderType=0 then 0 end IsMessager
--     ,'2016-03-11商务导入主案不存在的订单' Memo
--      FROM BusinessSERVER.BusinessSystemDB.dbo.BS_orderInfor o
--       left join BusinessSERVER.BusinessSystemDB.dbo.BS_inforAssistant b on o.assistantID=b.ID and o.tb_diqu=b.tb_diqu
--        left join BusinessSERVER.BusinessSystemDB.dbo.BS_swb_userList u on u.ID=o.salesManID and u.tb_diqu=o.tb_diqu
--         where o.assistantID<=0 and b.ID is NULL and u.ID is not  null 



--SELECT COUNT(1),ordernumber FROM YW_OrderInfo  GROUP BY ordernumber

--select * FROM YW_OrderInfo WHERE memo LIKE ('2016-03-14商务导入主案不存在的订单')

--delete FROM YW_OrderInfo WHERE memo LIKE ('2016-03-14商务导入主案不存在的订单')

 

posted @ 2016-03-14 18:58  Mr.Thanks  阅读(552)  评论(0编辑  收藏  举报