diff --git a/Lab8/Task1.sql b/Lab8/Task1.sql new file mode 100644 index 0000000..07d9f6c --- /dev/null +++ b/Lab8/Task1.sql @@ -0,0 +1,11 @@ +USE AdventureWorks; + +GO +CREATE PROCEDURE Sales.GetDiscounts +AS +BEGIN + SELECT Description, DiscountPct, Type, Category, StartDate, EndDate, MinQty, MaxQty + FROM Sales.SpecialOffer; +END + +EXEC Sales.GetDiscounts; \ No newline at end of file diff --git a/Lab8/Task2.sql b/Lab8/Task2.sql new file mode 100644 index 0000000..a0d37ad --- /dev/null +++ b/Lab8/Task2.sql @@ -0,0 +1,13 @@ +USE AdventureWorks; + +GO +CREATE PROCEDURE Sales.GetDiscountsForCategory +@Category nvarchar(50) +AS +BEGIN + SELECT Description, DiscountPct, Type, Category, StartDate, EndDate, MinQty, MaxQty + FROM Sales.SpecialOffer + WHERE Category IN (@Category); +END + +EXEC Sales.GetDiscountsForCategory 'Reseller' \ No newline at end of file diff --git a/Lab8/Task3.sql b/Lab8/Task3.sql new file mode 100644 index 0000000..714caba --- /dev/null +++ b/Lab8/Task3.sql @@ -0,0 +1,19 @@ +USE AdventureWorks; + +GO +CREATE PROCEDURE Sales.GetDiscountsForCategoryAndDate +@Category nvarchar(50) = NULL, +@DateToCheck datetime = NULL +AS +BEGIN + IF @DateToCheck IS NULL SET @DateToCheck = GETDATE(); + SELECT Description, DiscountPct, Type, Category, StartDate, EndDate, MinQty, MaxQty + FROM Sales.SpecialOffer + WHERE Category IN (@Category) AND (@DateToCheck BETWEEN StartDate AND EndDate); +END + +EXEC Sales.GetDiscountsForCategoryAndDate 'Reseller' + +DECLARE @DateToCheck datetime +SET @DateToCheck = DATEADD(MONTH, 1, GETDATE()) +EXEC Sales.GetDiscountsForCategoryAndDate 'Reseller', @DateToCheck \ No newline at end of file diff --git a/Lab8/Task4.sql b/Lab8/Task4.sql new file mode 100644 index 0000000..4c73ceb --- /dev/null +++ b/Lab8/Task4.sql @@ -0,0 +1,63 @@ +USE AdventureWorks; + +GO +CREATE PROCEDURE Sales.AddDiscount +@Description nvarchar(255), +@DiscountPct smallmoney, +@Type nvarchar(50), +@Category nvarchar(50), +@StartDate Datetime, +@EndDate Datetime, +@MinQty int, +@MaxQty int, +@NewProductID int +AS +BEGIN + BEGIN TRY + INSERT INTO Sales.SpecialOffer + (SpecialOfferID, Description, DiscountPct, Type, Category, StartDate, EndDate, MinQty, MaxQty) + VALUES (@NewProductID, @Description, @DiscountPct, @Type, @Category, @StartDate, @EndDate, @MinQty, @MaxQty) + END TRY + BEGIN CATCH + INSERT INTO dbo.ErrorLog + VALUES (GETDATE(), USER_NAME(), ERROR_NUMBER(), ERROR_SEVERITY(), ERROR_STATE(), ERROR_PROCEDURE(), ERROR_LINE(), ERROR_MESSAGE()) + END CATCH +END; + +GO +DECLARE @StartDate datetime, @EndDate datetime +SET @StartDate = GetDate() +SET @EndDate = DateAdd(month, 1, @StartDate) +DECLARE @NewId int +SET @NewId = 25; +EXEC Sales.AddDiscount +'Half price off everything', +0.5, +'Seasonal Discount', +'Customer', +@StartDate, +@EndDate, +0, +20, +@NewId OUTPUT; +SELECT @NewID; + +DECLARE @StartDate datetime, @EndDate datetime +SET @StartDate = GetDate() +SET @EndDate = DateAdd(month, 1, @StartDate) +DECLARE @NewId int, @ReturnValue int + +EXEC @ReturnValue = Sales.AddDiscount +'Half price off everything', +-0.5, -- UNACCEPTABLE VALUE +'Seasonal Discount', +'Customer', +@StartDate, +@EndDate, +0, +20, +@NewID OUTPUT +IF (@ReturnValue = 0) +SELECT @NewID +ELSE +SELECT TOP 1 * FROM dbo.ErrorLog ORDER BY ErrorTime DESC \ No newline at end of file