From 686b598fe031e651f778a40408f5bc3f7554c7c7 Mon Sep 17 00:00:00 2001 From: alesha Date: Tue, 26 Sep 2017 17:00:39 +0300 Subject: [PATCH] 32_CreateOrder_1 --- 1-select-tasks/32_CreateOrder.sql | 66 +++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 1-select-tasks/32_CreateOrder.sql diff --git a/1-select-tasks/32_CreateOrder.sql b/1-select-tasks/32_CreateOrder.sql new file mode 100644 index 0000000..830638a --- /dev/null +++ b/1-select-tasks/32_CreateOrder.sql @@ -0,0 +1,66 @@ +/* +** Создать хранимую процедуру которая принимает в себя информацию о Order и массив Order Details и создает новый Order в системе. (CreateOrder) +*/ + +/* +DROP PROCEDURE [dbo].[CreateOrder]; +DROP TYPE [OD]; +*/ + +CREATE TYPE dbo.OD +AS TABLE +( + [ProductID] INT + ,[UnitPrice] INT + ,[Quantity] INT + ,[Discount] INT +); +GO + + +CREATE PROCEDURE [dbo].[CreateOrder] +( + @CustomerID NVARCHAR(5) + ,@EmployeeID INT + ,@OrderDate Date + ,@RequiredDate Date + ,@ShippedDate Date + ,@ShipVia INT + ,@Freight MONEY + ,@ShipName NVARCHAR(40) + ,@ShipAddress NVARCHAR(60) + ,@ShipCity NVARCHAR(15) + ,@ShipRegion NVARCHAR(15) + ,@ShipPostalCode NVARCHAR(10) + ,@ShipCountry NVARCHAR(15) + ,@List AS dbo.OD READONLY +) +AS +BEGIN TRANSACTION; + INSERT INTO [Orders] VALUES + ( + @CustomerID + ,@EmployeeID + ,@OrderDate + ,@RequiredDate + ,@ShippedDate + ,@ShipVia + ,@Freight + ,@ShipName + ,@ShipAddress + ,@ShipCity + ,@ShipRegion + ,@ShipPostalCode + ,@ShipCountry + ); + + INSERT INTO [Order Details] + ( + [OrderID], + [ProductID], + [UnitPrice], + [Quantity], + [Discount] + ) + (SELECT @@IDENTITY, [ProductID], [UnitPrice], [Quantity], [Discount] FROM @List); +COMMIT TRANSACTION; \ No newline at end of file