Answer To: Part 3: Implementation – Database Script (5 marks) Create a T-SQL script for the database design in...
Ali Asgar answered on Jul 02 2021
test_usp_createCustomerOrder.sql
SET NOCOUNT ON
DECLARE @varitem as itemtype,
@res as INT
insert into @varitem
values (3,1,NULL),
(2,1,NULL)
EXECUTE usp_createCustomerOrder
1,@varitem,'pickup','walk-in',1,'2021-07-02 09:30:20','123, new lane, sydney 11090','2021-07-02 09:55:20',@OID=@res OUTPUT;
PRINT 'The New Order ID is ' + convert(varchar(10),@res);
GO
DECLARE @varitem as itemtype,
@res as INT
insert into @varitem
values (1,3,NULL),
(3,1,NULL)
EXECUTE usp_createCustomerOrder
2,@varitem,'Delivery','Phone',1,'2021-07-02 09:30:20','127, old lane, sydney 11091','2021-07-02 09:55:20',@OID=@res OUTPUT;
PRINT 'The New Order ID is ' + convert(varchar(10),@res);
GO
create_usp_createCustomerOrder.sql
USE YummyPizza
GO
CREATE OR ALTER PROCEDURE usp_createCustomerOrder (
@cid INT,
@item itemType READONLY,
@fulfil VARCHAR(30),
@type VARCHAR(30),
@emp INT,
@ordDate DATETIME,
@dlvryAdd VARCHAR(100),
@expDate DATETIME,
@OID INT OUTPUT
)
AS
BEGIN
DECLARE @OrdrVal DECIMAL(10,2),
@maxOrdID INT,
@logID VARCHAR(30)
;
SELECT @OrdrVal = SUM(MI.itemPrice*I.quantity)
FROM @item I join MenuItems MI
ON I.itemNum=MI.itemID;
BEGIN TRY
INSERT INTO orders (orderDate,orderStatus,fulfilType,orderType,orderValue,payApproveNum,empID,custID)
VALUES (@ordDate,'Confirmed',@fulfil,@type,@OrdrVal,NULL,@emp,@cid);
SELECT @maxOrdID = MAX(orderID) FROM Orders
IF @maxOrdID IS NULL
SET @maxOrdID=1;
INSERT INTO OrderItems (orderID,itemID,quantity)
SELECT @maxOrdID,itemNum,quantity
FROM @item
UPDATE Ing
SET Ing.currStockLvl=Ing.currStockLvl-M.quantity
FROM Ingredients Ing JOIN
(MenuIngred M JOIN @item I ON I.itemNum=M.itemID)
ON Ing.ingCode=M.ingCode
IF @fulfil='Delivery'
BEGIN
INSERT INTO PickupDelivery (orderID,DeliveryTime,DeliveryAddress)
VALUES (@maxOrdID,@expDate,@dlvryAdd);
END
ELSE
BEGIN
INSERT INTO PickupDelivery (orderID,pickupTime)
VALUES...