From c96fca8bc7696b5997a3509cce5bb26addf442fd Mon Sep 17 00:00:00 2001 From: sivo5555 Date: Wed, 26 Oct 2022 04:00:02 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BD=D0=B0=208?= =?UTF-8?q?=20=D0=BB=D0=B0=D0=B1=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Lab8/Task1.sql | 11 +++++++++ Lab8/Task2.sql | 13 +++++++++++ Lab8/Task3.sql | 19 +++++++++++++++ Lab8/Task4.sql | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 106 insertions(+) create mode 100644 Lab8/Task1.sql create mode 100644 Lab8/Task2.sql create mode 100644 Lab8/Task3.sql create mode 100644 Lab8/Task4.sql 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