从选片日志里恢复指定订单和时间的选片记录.sql 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. --从选片日志里恢复指定的选片情况;
  2. use [db]
  3. declare @time varchar(50) -- 选片时间;
  4. declare @order varchar(50) -- 选片订单;
  5. declare @spid varchar(50) -- 商品id;
  6. declare @spname varchar(50) -- 商品名;
  7. declare @no varchar(max) -- 商品相片;
  8. declare @type varchar(50) -- 日志类型;
  9. declare @ren varchar(50) -- 选片人;
  10. declare @count int -- 该订单、时间的选片日志记录数;
  11. declare @ary Table -- 表变量,存储符合条件的结果;
  12. (
  13. aid int identity(1,1) not null,
  14. id varchar(50) null,
  15. spid varchar(50) null,
  16. spname varchar(50) null,
  17. imgno varchar(max) null
  18. )
  19. -- 请在此处设置要查询的记录信息(前三项可改,根据要恢复的记录修改);
  20. set @ren = '王艳' -- 选片人;
  21. set @time = '2015-09-25 06:49:02' -- 选片记录时间;
  22. set @order = '20141023-003' -- 订单号;
  23. set @type = '选片保存' -- 勿改;
  24. -- 获取符合条件的记录数量;
  25. select @count = count(*) from [dbo].[SelectPhotoLog] where LogDate = @time and OrderId = @order and OptType = @type and UserName = @ren
  26. print '共查询 [' + convert(varchar, @count) + '] 条记录, 选片人[' + @ren +']'
  27. -- 将符合条件的记录存储到表变量中;
  28. --select OrderId, SPID, SPName, PhotoNo into @ary from [dbo].[SelectPhotoLog] where LogDate = @time and OrderId = @order and OptType = @type and UserName = @ren
  29. insert into @ary(id, spid, spname, imgno) select OrderId, SPID, SPName, PhotoNo from [dbo].[SelectPhotoLog] where LogDate = @time and OrderId = @order and OptType = @type and UserName = @ren
  30. -- 根据表变量来依次更新dindansp表;
  31. while @count > 0
  32. begin
  33. select @spid = spid, @spname = spname, @no = imgno from @ary where aid = @count
  34. print '订单号:' + @order + ' 商品ID:' + @spid + ' 商品名:' + @spname + ' 商品相片:' + @no
  35. update [dbo].[dindansp] set [no] = @no where [spid] = @spid and [id] = @order and [name] = @spname
  36. set @count = @count - 1
  37. end