Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --my code
- CREATE PROCEDURE usp_SwitchRoom(@TripId INT,@TargetRoomId INT)
- AS
- BEGIN
- DECLARE @InitialHotel INT= (SELECT h.Id FROM Hotels AS h
- JOIN Rooms AS r ON h.Id=r.HotelId
- JOIN Trips AS t ON t.RoomId=r.Id
- WHERE t.Id=@TripId)
- --ako se mahne trips join в @newhotel минава с 7/7...
- DECLARE @NewHotel INT=(SELECT h.Id FROM Hotels AS h
- JOIN Rooms AS r ON h.Id=r.HotelId
- JOIN Trips AS t ON t.RoomId=r.Id
- WHERE r.Id=@TargetRoomId)
- DECLARE @NewBeds INT=(SELECT r.Beds FROM Rooms AS r
- WHERE r.Id=@TargetRoomId)
- DECLARE @NumPeople INT=(SELECT COUNT(act.AccountId) FROM Trips AS t
- JOIN AccountsTrips AS act ON t.Id=act.TripId
- WHERE t.Id=@TripId)
- IF (@InitialHotel<>@NewHotel)
- RAISERROR('Target room is in another hotel',16,1)
- IF(@NumPeople>@NewBeds)
- RAISERROR('Not enough beds in target room!',16,1)
- UPDATE Trips
- SET RoomId=@TargetRoomId
- WHERE Id=@TripId
- END
- GO
- -- authors code
- CREATE OR ALTER PROC usp_SwitchRoom(@TripId INT, @TargetRoomId INT)
- AS
- BEGIN
- DECLARE @SourceHotelId INT = (SELECT H.Id
- FROM Hotels H
- JOIN Rooms R ON H.Id = R.HotelId
- JOIN Trips T ON R.Id = T.RoomId
- WHERE T.Id = @TripId)
- DECLARE @TargetHotelId INT = (SELECT H.Id
- FROM Hotels H
- JOIN Rooms R ON H.Id = R.HotelId
- WHERE R.Id = @TargetRoomId)
- IF (@SourceHotelId <> @TargetHotelId)
- THROW 50013, 'Target room is in another hotel!', 1
- DECLARE @PeopleCount INT = (SELECT COUNT(*)
- FROM AccountsTrips
- WHERE TripId = @TripId)
- DECLARE @TargetRoomBeds INT = (SELECT Beds
- FROM Rooms
- WHERE Id = @TargetRoomId)
- IF (@PeopleCount > @TargetRoomBeds)
- THROW 50013, 'Not enough beds in target room!', 1
- UPDATE Trips
- SET RoomId = @TargetRoomId
- WHERE Id = @TripId
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement