数据库过程将无法运行

时间:2019-04-12 16:54:22

标签: mysql sql

因此,我必须为数据库创建一个过程,在该过程中将参数传递给该过程。然后,它将采用您传入的参数,删除具有相同代码或匹配代码的发票。然后它将更新另一个包含客户余额的表。

CREATE PROCEDURE invoiceDelete(IN temp_code CHAR(4))
    BEGIN
    UPDATE customer
        DELETE FROM invoice WHERE INV_NUMBER = temp_code
        SET customer.CUS_BALANCE = customer.CUS_BALANCE + OLD.INV_TOTAL
        WHERE customer.CUS_CODE = OLD.CUS_CODE;
    END;

1 个答案:

答案 0 :(得分:0)

新旧仅用于触发器,您不能在存储的proc中使用它们。另外,您不能混合使用更新和删除。

首先,您需要使用传统的更新语句来更新客户余额(除非您在触发器中执行此操作)。然后,您删除发票。

CREATE PROCEDURE invoiceDelete(IN temp_code CHAR(4))
    BEGIN
        UPDATE customer INNER JOIN invoice ON customer.CUS_CODE = invoice.CUS_CODE
        SET customer.CUS_BALANCE = customer.CUS_BALANCE + invoice.INV_TOTAL
        WHERE invoice.INV_NUMBER = temp_code;
        DELETE FROM invoice WHERE INV_NUMBER = temp_code;
    END