Advertisement
Guest User

sbdkuba

a guest
Dec 14th, 2019
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 2.35 KB | None | 0 0
  1. CREATE PROCEDURE GiveDiscount
  2. AS
  3. BEGIN
  4.     SELECT * INTO #TempReservationsTable FROM Rezerwacja
  5.    
  6.     DECLARE
  7.     @Id int
  8.    
  9.     WHILE (SELECT Count(*) FROM #TempReservationsTable) > 0
  10.     BEGIN
  11.         SELECT TOP 1 @Id = IdRezerwacja FROM #TempReservationsTable
  12.        
  13.         DECLARE
  14.             @GuestID as INT = (SELECT IdGosc FROM Rezerwacja where IdRezerwacja = @Id),
  15.             @Discount as INT = (SELECT Procent_rabatu FROM Rezerwacja R INNER JOIN Gosc G ON R.IdGosc = G.IdGosc WHERE IdRezerwacja = @Id),
  16.             @HowManyReservationsPaid as INT = (SELECT COUNT(Zaplacona) FROM Rezerwacja where Zaplacona = 1 AND IdGosc = @GuestID)
  17.        
  18.         IF (@HowManyReservationsPaid >= 2)
  19.             UPDATE Gosc SET Procent_rabatu = Procent_rabatu * 1.1 where IdGosc = @GuestID
  20.             IF (EXISTS(SELECT Procent_rabatu FROM Gosc WHERE IdGosc = @GuestID AND (@Discount = NULL OR @Discount = 0 )))
  21.                 UPDATE Gosc SET Procent_rabatu = 10 where IdGosc = @GuestID
  22.                               IF (EXISTS(SELECT Procent_rabatu FROM Gosc where IdGosc = @GuestID AND @Discount > 30))
  23.                                     UPDATE Gosc SET Procent_rabatu = 30 where IdGosc = @GuestID
  24.  
  25.         Delete #TempReservationsTable Where IdRezerwacja = @Id
  26.     END
  27. END
  28. GO
  29.  
  30. CREATE TRIGGER UpdateDiscount
  31. ON dbo.Rezerwacja
  32. FOR UPDATE
  33. AS BEGIN
  34.    
  35.     SELECT * INTO #TempReservationsTable FROM Rezerwacja
  36.    
  37.     DECLARE
  38.     @Id int
  39.    
  40.     WHILE (SELECT Count(*) FROM #TempReservationsTable) > 0
  41.     BEGIN
  42.         SELECT TOP 1 @Id = IdRezerwacja FROM #TempReservationsTable
  43.        
  44.         DECLARE
  45.             @GuestID as INT = (SELECT IdGosc FROM Rezerwacja where IdRezerwacja = @Id),
  46.             @HowManyReservationsPaid as INT = (SELECT COUNT(Zaplacona) FROM Rezerwacja where Zaplacona = 1 AND IdGosc = @GuestID),
  47.             @Discount as INT = (SELECT Procent_rabatu FROM Rezerwacja R INNER JOIN Gosc G ON R.IdGosc = G.IdGosc WHERE IdRezerwacja = @Id),
  48.             @ReservationYear as datetime = (SELECT DATEPART(year, rezerwacja.DataDo) FROM Rezerwacja where IdRezerwacja = @Id)
  49.  
  50.         IF (@HowManyReservationsPaid >= 2 AND @ReservationYear = DATEPART(year, GETDATE()))
  51.             UPDATE Gosc SET Procent_rabatu = Procent_rabatu * (1 + 0.01 *@HowManyReservationsPaid) where IdGosc = @GuestID
  52.             IF (EXISTS(SELECT Procent_rabatu FROM Gosc WHERE IdGosc = @GuestID AND (@Discount = 0 OR @Discount = NULL)))
  53.                 UPDATE Gosc SET Procent_rabatu = 10 where IdGosc = @GuestID
  54.  
  55.         Delete #TempReservationsTable Where IdRezerwacja = @Id
  56.     END
  57. END
  58. GO
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement