存储过程中库藏的操作

存储过程中库存的操作
下酒店订单,2014-08-05 到2014-08-09共4天,订3间房。

存储过程:

锁定酒店房间的库存表(别人此时不能修改此表)
循环开始
           判断第一天库存是否足够
                   如果库存足够:减当天库存
                   如果库存不足:回滚前面的修改(下单失败)
循环结束
解锁酒店房间的库存表

以上提到的锁定库存表和当有库存不足是进行回滚
有方法实现吗?
具体的代码应该怎么写?

------解决方案--------------------
应该先找出是否有满足要求的房源,确定后再一次性下单。
------解决方案--------------------
begin tran
declare @count
select count(1) into @count from table with(tablelockx) where ……
if(@count>3)
update table set where ……
else
print 订单失败
commit

------解决方案--------------------
业务逻辑应该就是要检查4天的库存是否足够,一次检查4天就好,不用回滚,话说5号到9号好像是5天:
假设表名为Stock,日期字段为stockDate, 空余房间数量为restCount

declare @count int
select @count = count(*)
from Stock
where stockDate between '2014-08-05' and '2014-08-09'
where restCount >= 3

-- 符合空余房间要求的库存日数,等于4天的话
if @count = 4
    update Stock