訂單事務 儲存過程

2021-06-23 08:39:05 字數 1229 閱讀 6584

create proc createorder

@orderid nvarchar(50),--訂單號

@userid int,--使用者編號

@address nvarchar(255),--收貨人位址

@totalmoney money output --總金額

as begin

declare @error int

set @error=0

begin transaction

--計算總價

select @totalmoney=sum([count]*unitprice)from cart 

inner join books on cart.bookid=books.id

where userid=@userid

set @error=@@error+@error

--向訂單主表中插入資料

insert into orders(orderid,orderdate,userid,totalprice,postaddress,[state])

values(@orderid,getdate(),@userid,@totalmoney,@address,0)

set @error=@@error+@error

--向訂單明細表中插入資料

insert into orderbook(orderid,bookid,quantity,unitprice)

select @orderid,bookid,[count],unitprice from cart inner join books on cart.bookid=books.id

where cart.userid=@userid

set @error=@@error+@error

--刪除購物車表中的資料

delete from cart where userid=@userid

set @error=@@error+@error

--判斷錯誤,執行事務

if @error>0

begin

rollback transaction

endelse

begin

commit transaction

endend

--rollback transaction

--commit transaction

--primary key(id) identity(1,1)

儲存過程調儲存過程的事務

直接上 是在包裡寫的儲存過程,要測試的話,要先寫宣告 宣告procedure test1 p retcode in out varchar2,p retinfo in out varchar2 procedure test2 p retcode in out varchar2,p retinfo i...

儲存過程生成訂單號

delimiter use ppd sit drop procedure if exists createorderno create definer root procedure createorderno out neworderno char 15 begin declare currentd...

Sql 儲存過程 事務

alter procedure dbo usp pe delworklogbill id varchar 50 companycode varchar 50 asdeclare errno int set errno 0 begin tran 開始執行事務 delete from opeworklo...