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
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
end
else
begin
commit transaction
end
end
--rollback transaction
--commit transaction
--primary key(id) identity(1,1)