Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
80 changes: 80 additions & 0 deletions 1-select-tasks/33.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
DROP PROCEDURE dbo.UpdateOrder;
DROP TYPE dbo.OrderDetailsList;

CREATE
TYPE dbo.OrderDetailsList AS TABLE
(
ProductID INT,
UnitPrice MONEY,
Quantity SMALLINT,
Discount REAL
);

CREATE
PROCEDURE dbo.UpdateOrder
@OrderDetailsList AS dbo.OrderDetailsList READONLY,
@OrderID INT,
@CustomerID NCHAR(5),
@EmployeeID INT,
@OrderDate DATETIME,
@RequiredDate DATETIME,
@ShippedDate DATETIME,
@ShipVia INT,
@Freight MONEY,
@ShipName NVARCHAR(40),
@ShipAddress NVARCHAR(60),
@ShipCity NVARCHAR(15),
@ShipRegion NVARCHAR(15),
@ShipPostalCode NVARCHAR(10),
@ShipCountry NVARCHAR(15)
AS
BEGIN TRY
BEGIN TRANSACTION
UPDATE
dbo.Orders
SET
CustomerID = @CustomerID,
EmployeeID = @EmployeeID,
OrderDate = @OrderDate,
RequiredDate = @RequiredDate,
ShippedDate = @ShippedDate,
ShipVia = @ShipVia,
Freight = @Freight,
ShipName = @ShipName,
ShipAddress = @ShipAddress,
ShipCity = @ShipCity,
ShipRegion = @ShipRegion,
ShipPostalCode = @ShipPostalCode,
ShipCountry = @ShipCountry
WHERE OrderID = @OrderID

DELETE FROM [Order Details]
WHERE OrderId = @OrderId

INSERT
dbo.[Order Details](
ProductID,
UnitPrice,
Quantity,
Discount
)
SELECT @OrderId
ProductID,
UnitPrice,
Quantity,
Discount
FROM @OrderDetailsList;
COMMIT;
END TRY
BEGIN CATCH
ROLLBACK;
END CATCH

-- Run

DECLARE @OrderDetailsL AS dbo.OrderDetailsList
INSERT @OrderDetailsL (ProductID, UnitPrice, Quantity, Discount)
VALUES (42, 30, 12, 0.15)
DECLARE @dt DATETIME
SET @dt=GETDATE()
EXEC dbo.UpdateOrder @OrderDetailsL, 102554, 'SIODE', 2, @dt, @dt, @dt, 5, 46, 'Fologr', 'Wolski Zajazd', 'ul. Filtrowa 68', 'Warszawa', NULL, '01-012', 'Poland';