Ich möchte unter gespeicherten Prozedur ausführen, aber es gibt mir einen Fehler. In Flag 1 nach dem Aktualisieren der Auftragstabelle möchte ich eine andere Bedingung überprüfen und wenn das wahr ist, dann möchte ich eine weitere Aktualisierungsabfrage ausführen. Ich versuchte dies in SQL Server mit temporären Tabellen und es funktionierte. Bitte hilf mir.verschachtelt IF ELSE in MySQL
Fehler ist unten:
Script Zeile: 4 Sie haben einen Fehler in der SQL-Syntax; das Handbuch , die für die richtige Syntax zu Verwendung in der Nähe von 'FROM Produkt PR INNER JOIN (SELECT PR.ID AS ProductID (PR.Quantity - OD.Qu' auf Ihre MySQL-Server-Version entspricht in Zeile 35
DELIMITER $$
DROP PROCEDURE IF EXISTS `onlineshop`.`USP_Public_SaveOrder` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `USP_Public_SaveOrder`(IN pint_Flag INT,INOUT pint_ID BIGINT,IN pint_Status INT,IN pint_CustomerID BIGINT,IN pint_ShippingAddressID BIGINT,IN pint_BillingAddresID BIGINT, IN pdec_ShippingCharge DECIMAL(18,2),IN pdec_Tax DECIMAL(18,2),IN pdec_Total DECIMAL(18,2),IN pdte_TransactionDate DATETIME)
BEGIN
IF(pint_Flag=0) THEN
INSERT INTO orderheader(Status,
CustomerID,
ShippingAddressID,
BillingAddressID,
ShippingCharge,
Tax,
Total,
TransactionDate)
VALUES (pint_Status,
pint_CustomerID,
pint_ShippingAddressID,
pint_BillingAddresID,
pdec_ShippingCharge,
pdec_Tax,
pdec_Total,
pdte_TransactionDate);
SET pint_ID=LAST_INSERT_ID();
ELSEIF(pint_Flag=1) THEN
UPDATE orderheader
SET Status = pint_Status,
CustomerID = pint_CustomerID,
ShippingAddressID = pint_ShippingAddressID,
BillingAddressID = pint_BillingAddresID,
ShippingCharge = pdec_ShippingCharge,
Tax = pdec_Tax,
Total = pdec_Total,
TransactionDate = pdte_TransactionDate
WHERE ID=pint_ID;
IF(pint_Status=2) THEN
UPDATE product SET Quantity = A.remain
FROM product PR
INNER JOIN (SELECT PR.ID AS ProductID, (PR.Quantity - OD.Quantity) AS remain
FROM product P
INNER JOIN orderdetail OD ON OD.ProductID = P.ID AND OD.OrderID = pint_ID) A ON PR.ID = A.ProductID
ELSE
RETURN
END IF;
END IF;
END $$
DELIMITER ;
Sie scheinen ein Semikolon vor dem letzten "ELSE" zu fehlen. – Jocelyn
Ich habe ein Semikolon hinzugefügt. aber immer noch den gleichen Fehler – user2837480