麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發(fā) > 綜合 > 正文

SQLServer 存儲過程 帶事務(wù)處理實例

2024-07-21 02:51:45
字體:
供稿:網(wǎng)友
ALTER PRocedure [dbo].[P_DelImportData](	@orderNo varchar(50),			--定義存儲過程傳入?yún)?shù) 	@smallOrderNo varchar(50),	@phoneModel varchar(50),	@customer varchar(50))AS	SET NOCOUNT ON	declare @error int = 0    ---事務(wù)中的錯誤記錄,定義存儲過程中的變量(類似程序中的變量設(shè)定)  	declare @errerMsg varchar(500)       ---事物中的錯誤信息記錄	declare @moveNo int       ---挪單的數(shù)量	declare @originalOrderNo varchar(50) ---挪單的原大單號								 	create table #macSnInfo				--創(chuàng)建臨時表 	(		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						---將數(shù)據(jù)插入臨時表做數(shù)據(jù)處理		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	--設(shè)置事物回滾機(jī)制,xact_abort為 on,回滾整個事務(wù)	set xact_abort on 	--開啟事務(wù)	begin transaction 		if not exists(select * from #phoneInfo)			begin				set @errerMsg='沒有查詢到訂單數(shù)據(jù)!'    				rollback transaction  				select @errerMsg AS errorMsg				return -1 --設(shè)置操作結(jié)果錯誤標(biāo)識   			end		else if exists(select boxNo from #macSnInfo where boxNo is not null)				--如果包裝表查詢出的結(jié)果是已經(jīng)包裝的			begin				set @errerMsg='該訂單已經(jīng)包裝過,不能直接刪除,請先清空包裝信息!'				rollback transaction  				select @errerMsg AS errorMsg				return -1 --設(shè)置操作結(jié)果錯誤標(biāo)識     			end		if exists(select * from #phoneInfo where orderNo=smallOrderNo)				--如果存在訂單號相同的phoneInfo,是正常單			begin 				insert into del_bak_phoneInfo				--先進(jìn)行數(shù)據(jù)備份					select orderNo,customer,smallOrderNo,phoneModel,newPower,oldPower							,software,hardware,amount,getdate()  							from #phoneInfo							 				set @error+=@@ERROR --記錄有可能產(chǎn)生的錯誤號  								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 --記錄有可能產(chǎn)生的錯誤號  					---------------- 備份完數(shù)據(jù)開始刪除				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 --記錄有可能產(chǎn)生的錯誤號 				delete from macSnInfo					where	(smallOrderNo=@smallOrderNo or @smallOrderNo='') 						and (orderNo=@orderNo or  @orderNo='')						and (phoneModel=@phoneModel or @phoneModel='')  				set @error+=@@ERROR --記錄有可能產(chǎn)生的錯誤號 			end		else				--不存在訂單號相同的phoneInfo,是挪單					begin					insert into del_bak_phoneInfo				--先進(jìn)行數(shù)據(jù)備份					select orderNo,customer,smallOrderNo,phoneModel,newPower,oldPower							,software,hardware,amount,getdate() 							from #phoneInfo									set @error+=@@ERROR --記錄有可能產(chǎn)生的錯誤號  				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 --記錄有可能產(chǎn)生的錯誤號  								---------------- 挪單刪除要先還原phoneInfo數(shù)量,再刪除				select @moveNo = ISNULL(amount,0) from #phoneInfo			--記錄挪單的數(shù)量				select @originalOrderNo = orderNo from #phoneInfo			--記錄原大單號(挪單前)				update phoneInfo set amount = amount+@moveNo					where	smallOrderNo=@originalOrderNo						and orderNo=@originalOrderNo						and (phoneModel=@phoneModel or @phoneModel='')						and (customer=@customer or @customer=''	)  				set @error+=@@ERROR --記錄有可能產(chǎn)生的錯誤號  				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 --記錄有可能產(chǎn)生的錯誤號 				update macSnInfo set smallOrderNo = @originalOrderNo		 --恢復(fù)挪單前的小單號(原大單號)					where	(smallOrderNo=@smallOrderNo or @smallOrderNo='') 						and (orderNo=@orderNo or  @orderNo='')						and (phoneModel=@phoneModel or @phoneModel='')  									set @error+=@@ERROR --記錄有可能產(chǎn)生的錯誤號 				  			end  if(@error<>0 or @errerMsg<>'')    begin      rollback transaction  	select '-1' AS errorMsg    return -1 --設(shè)置操作結(jié)果錯誤標(biāo)識  	  end  else    begin      commit transaction   	select '1' AS errorMsg    return 1 --操作成功的標(biāo)識  	  end
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 欧美亚州 | 91精品国产福利尤物免费 | 国产女同疯狂激烈互摸 | 成人免费一区二区三区视频网站 | 竹内纱里奈和大战黑人 | 成人免费看视频 | 成人国产在线视频 | 久久欧美亚洲另类专区91大神 | 日本免费a∨ | 免费欧美精品 | 午夜精品成人一区二区 | 午夜视频在线免费观看 | 91精品国产成人 | 全视频tv | 性猛交ⅹxxx乱巴西 在线播放中文 | 日本a大片 | 美女羞羞视频在线观看 | 亚洲国产精品500在线观看 | 99在线啪 | 国产理论视频在线观看 | 精品国产91久久久久久久妲己 | 日本在线免费观看 | 久久精品视频16 | 亚洲天堂一级片 | 国产亚洲精品久久久久婷婷瑜伽 | 日本综合久久 | 色就色 综合偷拍区91网 | 国产精品欧美久久久久一区二区 | jizzjizz中国人少妇中文 | 19禁国产精品福利视频 | 成人一区二区三区在线 | 精品一区二区三区网站 | www.69色 | 欧产日产国产精品乱噜噜 | 天堂在线中文资源 | 欧美精品一级 | 国产精品片一区二区三区 | 羞羞网站在线观看入口免费 | 99精品国产一区二区三区 | 一级成人欧美一区在线观看 | 亚洲av一级毛片特黄大片 |