我花了超过3天的时间,我完全迷路了。该过程接收已付款订单的id_payment_document
(Payment_document
表),并且必须将相应记录的Status
(Preorder
表)从1
更改为2
。
这里是按条件Paid_order = id_preorder
合并的表。 (非常抱歉,这些图像尚未提供给我)
这是我的程序。
CREATE PROCEDURE upd_status (IN id_payment_document INTEGER)
BEGIN
DECLARE us_status INTEGER;
DECLARE done INTEGER DEFAULT 0;
DECLARE us_cursor CURSOR FOR SELECT Status FROM Preorder WHERE (SELECT Paid_order FROM Payment_document JOIN Preorder ON id_preorder=Paid_order) = id_payment_document;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;
OPEN us_cursor;
REPEAT
FETCH us_cursor INTO us_status;
IF done=0 THEN
SET us_status=2;
END IF;
UNTIL done=1 END REPEAT;
CLOSE us_cursor;
SET Status=us_status FROM Preorder WHERE (SELECT Paid_order FROM Payment_document JOIN Preorder ON id_preorder=Paid_order)=id_payment_document;
END//
您不需要循环。只需将单个UPDATE
查询与JOIN
关联即可与Payment_document
关联。
UPDATE Preorder AS p
JOIN Payment_document AS d ON p.id_preorder = d.paid_order
SET p.status = 2
WHERE d.id_payment_document = id_payment_document