SQL 第八章

来源:互联网 发布:java自行车价格表 编辑:程序博客网 时间:2024/05/22 03:44
--阶段1:根据输入的客房类型名称,统计入住的客人总人数  create procedure usp_GetGuestNum   @TypeName varchar(32),  @GuestNum int output  as    select @GuestNum=COUNT(*) from GuestRecord  where RoomID in  (    select RoomID from Room    where RoomTypeID in    (      select RoomTypeID from RoomType      where TypeName=@TypeName    )  )  --调用存储过程  declare @num int  exec usp_GetGuestNum '张淼',@num output  print 'total:'+convert(nvarchar(20),@num)       --阶段2:根据房间号查询客房信息  --通过房间号查询客房的相关信息  --如果房间号为-1,表示查询所有客房信息,包括客房ID,床位数,  --客房状态ID,客房类型和房价。  create procedure usp_RoomInfo   @roomnum int  as   if(@roomnum=-1)   begin         select room.RoomID,Room.BedNum,Room.RoomStateID,TypeName,TypePrice      from room,roomtype      where room.roomtypeid=Roomtype.TypeID   end    else  begin      select room.RoomID,Room.BedNum,Room.RoomStateID,TypeName,TypePrice      from room,roomtype      where room.roomtypeid=Roomtype.TypeID      and Room.RoomID=@roomnum  end      --调用存储过程  exec usp_RoomInfo 1008      --阶段3:删除某种客房类型记录  --需求说明:根据客房类型删除客房类型记录,  --如果操作成功(客房信息表Room没有  --对应记录才可以删除),返回删除的记录数,否则返回-1  select * from roomtype  select * from room    create procedure  usp_DelListByType    @typeName nvarchar(20)  as   if not exists   (     select RoomTypeId from room     where roomtypeid in     (       select typeid from roomtype           where typename=@typename     )   )   begin      delete from roomtype      where typeName=@typename      return @@rowcount  end  else    return -1      --调用存储过程  declare @result int  exec @result=usp_DelListByType '标准间'  if(@result>0)  print '删除了'+convert(nvarchar(20),@result)+'条记录'  else  print @result    --阶段4:练习--插入入住客人记录   --需求说明:使用存储过程将入住客人信息插入客人信息表中,   --检查身份证号必须是18个字符组成   --押金的默认值为1000元   --将客人入住房间的当前状态设置为"入住"的状态编号   --如果客人记录插入成功,输出客人流水号。   create Proc usp_insertGuestRecord    @identityID nvarchar(20),    @guestName nvarchar(20),    @roomID int,    @resideID int,    @resideDate datetime,    @leaveDate datetime,    @Deposit decimal(18,2)=1000,  --押金的默认值为1000元    @TotalMoney decimal(18,2),    @guestID int output  as   --检查身份证号    if(len(@identityID)!=18)    begin      print '身份证号只能是18位'      return    end      --插入记录    begin tran     declare @ErrorSum int --定义保存错误总和的变量     insert into GuestRecord     values(@identityID,@guestName,@roomID,@resideID,     @resideDate,@leaveDate,@Deposit,@TotalMoney)     set @ErrorSum=@ErrorSum+@@Error            --将客人入住房间的当前状态设置为"入住"的状态编号     declare @roomStateID int     select @roomStateID=RoomStateID from roomState     where RoomStateName='已入住'                    update room set RoomStateID=@roomStateID     where RoomID=@roomID     set @ErrorSum=@ErrorSum+@@Error     --insert或update这两个过程中至少有一个出了错     if(@ErrorSum>0)      begin       rollback tran     end     else     begin     commit tran     set @guestID=@@Identity     end       --调用存储过程   declare @guestid int   exec usp_insertGuestRecord     '410523198806267523','李小龙',1008,1,'2013-3-11','2013-3-15',500,500,@guestid output  if(@guestid>0)  begin    print '操作成功,客户编号是'+convert(nvarchar(20),@guestid)  end  else   print '操作失败'  

0 0
原创粉丝点击