1. 程式人生 > >SQL事務、存儲過程

SQL事務、存儲過程

money rollback 輸出 mit 列表 -- 轉義 ima arc


id   name   price
1    張三    850.00
2    李四    850.00





--事務
declare
@error int set @error=0; begin tran update Bank set price-=100 where id=1 set @error +=@@ERROR update Bank set price+=100 where id
=2 set @error+=@@ERROR if( @error=0) begin print 轉賬成功 commit tran end else begin print 轉賬失敗 rollback tran end go select * from Bank --存儲過程 drop proc usp_changemoney go create proc usp_changemoney --參數列表 @ToId int, @FromId int, @money decimal(18,2) as --SQL代碼 declare @error int set @error
=0 begin tran update Bank set price-=@money where id=@FromId set @error+=@@error update Bank set price+=@money where id=@ToId set @error+=@@error if(@error=0) begin --轉義 print 成功轉賬+cast(@money as nvarchar)+ commit tran end else begin print 轉賬失敗 rollback tran end go --調用存儲過程 exec 存儲過程名稱 fromId toId 轉帳金額
exec usp_changemoney 2,1,150 --存儲過程-(帶輸出值) drop proc usp_changemoney go create proc usp_changemoney --參數列表 @ToId int, @FromId int, @money decimal(18,2), @ToName nvarchar(50) output, @UnitPrice decimal(18,2)output as --SQL代碼 declare @error int set @error=0 begin tran update Bank set price-=@money where id=@FromId set @error+=@@error update Bank set price+=@money where id=@ToId set @error+=@@error select @ToName= name from Bank where id=@ToId if(@error=0) begin -- 轉義cast print 成功轉賬+cast(@money as nvarchar)+ commit tran select @UnitPrice= price from Bank where id=@FromId end else begin print 轉賬失敗 rollback tran end go --調用存儲過程 declare @ToName nvarchar(50) ,@UnitPrice decimal(18,2) exec usp_changemoney 2,1,150,@ToName output,@UnitPrice output print 被轉賬人:+@ToName print 余額+cast(@UnitPrice as nvarchar(50)) select * from Bank

SQL事務、存儲過程