22,209
社区成员
发帖
与我相关
我的任务
分享
--判断要创建的存储过程是否存在,如果存在就先删除
if exists(select * from sysobjects where name='usp_insert')
drop proc usp_insert
go
create proc usp_insert
@identityid char(18), --身份证号
@guesname varchar(50), --客人姓名
@roomid int, --房间编号
@resideDate datetime, --入住日期
@deposit money=1000, --押金
@guestid int output --客人表最后一个编号
as
--开始事务
begin transaction
declare @error int=0
--判断身份证号是否为18位
if(LEN(@identityid)<>18)
set @error=@error+@@Error
return -1
--把信息插入到客人表
insert into GuestRecord(IdentityID,GuestName,RoomID,ResideID,ResideDate,Deposit) values(@identityid,@guesname,@roomid,1,@resideDate,@deposit)
set @error=@error+@@ERROR
if(@error<>0)
return -1
declare @roomStateId varchar(20) --记录入住状态的编号
set @roomStateId=(select RoomStateId from RoomState where RoomStateName='已入住')
--更新房间表
update Room set GuestNum=guestNum+1,RoomStateID=@roomStateId where RoomID=@roomid
set @error=@error+@@ERROR
if(@error<>0)
begin
rollback transaction --回滚事务
return -1
end
else
begin
--得到客人表最后一个编号
select @guestid=@@IDENTITY from GuestRecord
commit transaction --提交事务
end
Go