Untitled
unknown
plain_text
2 years ago
1.6 kB
6
Indexable
CREATE DEFINER=`root`@`localhost` PROCEDURE `place_order_customer`(
IN p_OrderCustomerId INT,
IN p_CustomerId INT,
IN p_SKU VARCHAR(10),
IN p_Quantity INT,
IN p_Price DOUBLE,
IN p_LastName VARCHAR(50),
IN p_FristName VARCHAR(50),
IN p_Phone VARCHAR(20),
IN p_Address VARCHAR(255)
)
BEGIN
DECLARE v_Inventory INT;
DECLARE v_OrderId INT;
DECLARE v_Status VARCHAR(50) DEFAULT 'Pending';
START TRANSACTION;
SELECT Toy.InventoryNumber INTO v_Inventory
FROM productwithprice Toy
WHERE Toy.SKU = p_SKU;
-- Kiểm tra xem có đủ hàng trong kho không
IF v_Inventory >= p_Quantity THEN
-- Trừ số lượng hàng đã bán khỏi số lượng hàng tồn kho
UPDATE Toy
SET InventoryNumber = InventoryNumber - p_Quantity
WHERE SKU = p_SKU;
ELSE
ROLLBACK;
END IF;
IF (p_OrderCustomerId IS NULL) THEN
-- Thêm đơn hàng vào bảng CustomerOrder
INSERT INTO CustomerOrder (Status, OrderDate, FristName, LastName, Phone, Address, CustomerId)
VALUES (v_Status,
NOW(),
p_FristName,
p_LastName,
p_Phone,
p_Address,
p_CustomerId);
-- Lấy ID của đơn hàng vừa được thêm vào
SELECT LAST_INSERT_ID() INTO v_OrderId;
ELSE
SELECT p_OrderCustomerId INTO v_OrderId;
END IF;
-- Thêm chi tiết đơn hàng vào bảng CustomerOrderDetail
INSERT INTO CustomerOrderDetail (CustomerOrderId, SKU, Quantity, Price)
VALUES (v_OrderId,
p_SKU,
p_Quantity,
p_Price);
SELECT v_OrderId as OrderId;
commit;
ENDEditor is loading...