【无标题】抄来的数据

ALTER procedure [dbo].[P_DelImportData]
(
@orderNo varchar(50),--定义存储过程传入参数 
@smallOrderNo varchar(50),
@phoneModel varchar(50),
@customer varchar(50)
)
AS
SET NOCOUNT ON

declare @error int = 0    ---事务中的错误记录,定义存储过程中的变量(类似程序中的变量设定)  
declare @errerMsg varchar(500)       ---事物中的错误信息记录
declare @moveNo int       ---挪单的数量
declare @originalOrderNo varchar(50) ---挪单的原大单号
**create table #macSnInfo--创建临时表 
(
orderNo varchar(50),
mac varchar(50),
sn varchar(50),
boxNo varchar(50),
status varchar(50),
currentBoxNum int,
boxNumMax int,
smallOrderNo varchar(50),
sortBoxNum int,
importNum int,
importDate datetime,
exportDate datetime,
phoneModel varchar(50),
zpuz varchar(50),
rfpi varchar(50),
bigBatchNo varchar(50),
smallBatchNo varchar(50)
)**

**create table #phoneInfo
(
orderNo varchar(50),
customer varchar(50),
smallOrderNo varchar(50),
phoneModel varchar(50),
newPower varchar(50),
oldPower varchar(50),
software varchar(50),
hardware varchar(50),
amount varchar(50)
)**

begin—将数据插入临时表做数据处理

insert into #macSnInfo
select orderNo,mac,sn,boxNo,status,currentBoxNum,boxNumMax,smallOrderNo
,sortBoxNum,importNum,importDate,exportDate,phoneModel,zpuz,
rfpi,bigBatchNo,smallBatchNo
from macSnInfo
where(smallOrderNo=@smallOrderNo or @smallOrderNo='') 
and (orderNo=@orderNo or  @orderNo='')
and (phoneModel=@phoneModel or @phoneModel='') 
insert into #phoneInfo
select orderNo,customer,smallOrderNo,phoneModel,newPower,oldPower
,software,hardware,amount 
from phoneInfo
where(smallOrderNo=@smallOrderNo or @smallOrderNo='') 
and (orderNo=@orderNo or  @orderNo='')
and (phoneModel=@phoneModel or @phoneModel='')
and (customer=@customer or @customer='')  
end
--设置事物回滚机制,xact_abort为 on,回滚整个事务
set xact_abort on 
--开启事务
begin transaction 
if not exists(select * from #phoneInfo)
begin
set @errerMsg='没有查询到订单数据!'    
rollback transaction  
select @errerMsg AS errorMsg
return -1 --设置操作结果错误标识   
end
else if exists(select boxNo from #macSnInfo where boxNo is not null)
--如果包装表查询出的结果是已经包装的
begin
set @errerMsg='该订单已经包装过,不能直接删除,请先清空包装信息!'
rollback transaction  
select @errerMsg AS errorMsg
return -1 --设置操作结果错误标识     
end
if exists(select * from #phoneInfo where orderNo=smallOrderNo)
--如果存在订单号相同的phoneInfo,是正常单
begin 
insert into del_bak_phoneInfo--先进行数据备份
select orderNo,customer,smallOrderNo,phoneModel,newPower,oldPower
,software,hardware,amount,getdate()  
from #phoneInfo
 
set @error+=@@ERROR --记录有可能产生的错误号  

insert into del_bak_macSnInfo 
select orderNo,mac,sn,boxNo,status,currentBoxNum,boxNumMax,smallOrderNo
,sortBoxNum,importNum,importDate,exportDate,phoneModel,zpuz,
rfpi,bigBatchNo,smallBatchNo,getdate()  
from #macSnInfo

set @error+=@@ERROR --记录有可能产生的错误号  

---------------- 备份完数据开始删除
delete from phoneInfo
where(smallOrderNo=@smallOrderNo or @smallOrderNo='') 
and (orderNo=@orderNo or  @orderNo='')
and (phoneModel=@phoneModel or @phoneModel='')
and (customer=@customer or @customer='')  
set @error+=@@ERROR --记录有可能产生的错误号 

delete from macSnInfo
where(smallOrderNo=@smallOrderNo or @smallOrderNo='') 
and (orderNo=@orderNo or  @orderNo='')
and (phoneModel=@phoneModel or @phoneModel='')  
set @error+=@@ERROR --记录有可能产生的错误号 

end
else
--不存在订单号相同的phoneInfo,是挪单
begin
insert into del_bak_phoneInfo--先进行数据备份
select orderNo,customer,smallOrderNo,phoneModel,newPower,oldPower
,software,hardware,amount,getdate() 
from #phoneInfo

set @error+=@@ERROR --记录有可能产生的错误号  

insert into del_bak_macSnInfo 
select orderNo,mac,sn,boxNo,status,currentBoxNum,boxNumMax,smallOrderNo
,sortBoxNum,importNum,importDate,exportDate,phoneModel,zpuz,
rfpi,bigBatchNo,smallBatchNo,getdate()  
from #macSnInfo

set @error+=@@ERROR --记录有可能产生的错误号  

---------------- 挪单删除要先还原phoneInfo数量,再删除

select @moveNo = ISNULL(amount,0) from #phoneInfo--记录挪单的数量
select @originalOrderNo = orderNo from #phoneInfo--记录原大单号(挪单前)
update phoneInfo set amount = amount+@moveNo
wheresmallOrderNo=@originalOrderNo
and orderNo=@originalOrderNo
and (phoneModel=@phoneModel or @phoneModel='')
and (customer=@customer or @customer='')  

set @error+=@@ERROR --记录有可能产生的错误号  

delete from phoneInfo --删除挪单记录
where(smallOrderNo=@smallOrderNo or @smallOrderNo='') 
and (orderNo=@orderNo or  @orderNo='')
and (phoneModel=@phoneModel or @phoneModel='')
and (customer=@customer or @customer='')  
set @error+=@@ERROR --记录有可能产生的错误号 

update macSnInfo set smallOrderNo = @originalOrderNo --恢复挪单前的小单号(原大单号)
where(smallOrderNo=@smallOrderNo or @smallOrderNo='') 
and (orderNo=@orderNo or  @orderNo='')
and (phoneModel=@phoneModel or @phoneModel='')  

set @error+=@@ERROR --记录有可能产生的错误号 
  
end
if(@error<>0 or @errerMsg<>'')  
  begin  
    rollback transaction  
select '-1' AS errorMsg
    return -1 --设置操作结果错误标识  

  end  
else  
  begin  
    commit transaction   
select '1' AS errorMsg
    return 1 --操作成功的标识  

  end  

————————————————
版权声明:本文为CSDN博主「คิดถึง643」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_72426331/article/details/126735455

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值