Процедура базы данных не запускается

#mysql #sql

#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. Старые / новые предназначены только для триггеров, вы не можете использовать их в сохраненных процедурах.

Ответ №1:

Старые / новые предназначены только для триггеров, вы не можете использовать их в сохраненных процедурах. Кроме того, вы не можете смешивать обновление и удаление.

Сначала вам нужно обновить баланс клиента (если вы не делаете это в триггере), используя традиционную инструкцию update. Затем вы удаляете счет-фактуру.

 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
  

Комментарии:

1. Спасибо, это идеально. И мне придется больше вникать в это, чтобы понять, спасибо.