1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| DROP PROCEDURE IF EXISTS make_payment;
DELIMITER $$ CREATE PROCEDURE make_payment( p_client_id INT, p_invoice_id INT, p_payment_date DATE, p_payment_amount DECIMAL(9,2), p_payment_method TINYINT ) BEGIN IF p_payment_amount <= 0 THEN SIGNAL SQLSTATE '22003' SET MESSAGE_TEXT = 'Invalid payment amount'; END IF;
INSERT INTO payments( client_id, invoice_id, date, amount, payment_method ) VALUE( p_client_id, p_invoice_id, IFNULL(p_payment_date, CURDATE()), p_payment_amount, IFNULL(p_payment_method, 1) ); END$$ DELIMITER ;
CALL make_payment('1', '19', NULL, 100, NULL); +------------+-----------+------------+------------+--------+----------------+ | payment_id | client_id | invoice_id | date | amount | payment_method | +------------+-----------+------------+------------+--------+----------------+ | 1 | 5 | 2 | 2019-02-12 | 8.18 | 1 | | 2 | 1 | 6 | 2019-01-03 | 74.55 | 1 | | 3 | 3 | 11 | 2019-01-11 | 0.03 | 1 | | 4 | 5 | 13 | 2019-01-26 | 87.44 | 1 | | 5 | 3 | 15 | 2019-01-15 | 80.31 | 1 | | 6 | 3 | 17 | 2019-01-15 | 68.10 | 1 | | 7 | 5 | 18 | 2019-01-08 | 32.77 | 1 | | 8 | 5 | 18 | 2019-01-08 | 10.00 | 2 | | 9 | 1 | 19 | 2023-08-27 | 100.00 | 1 | +------------+-----------+------------+------------+--------+----------------+
CALL make_payment('1', '19', NULL, -100, NULL); ERROR 1644 (22003): Invalid payment amount
|