无法通过过程更新值

问题描述 投票:0回答:1

我花了超过3天的时间,我完全迷路了。该过程接收已付款订单的id_payment_documentPayment_document表),并且必须将相应记录的StatusPreorder表)从1更改为2

这里是按条件Paid_order = id_preorder合并的表。 (非常抱歉,这些图像尚未提供给我)

  1. Preorderenter image description here
  2. Payment_documententer image description here

这是我的程序。

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//
mysql cursor procedure
1个回答
0
投票

您不需要循环。只需将单个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
© www.soinside.com 2019 - 2024. All rights reserved.