DELIMITER //
CREATE PROCEDURE SafeTransfer(
    IN from_account INT,
    IN to_account INT,
    IN amount DECIMAL(10,2)
)
BEGIN
    DECLARE EXIT HANDLER FOR SQLEXCEPTION
    BEGIN
        ROLLBACK;
        SELECT 'Transaction Failed' AS message;
    END;

START TRANSACTION;
    UPDATE accounts SET balance = balance - amount WHERE id = from_account;
    UPDATE accounts SET balance = balance + amount WHERE id = to_account;
    COMMIT;
    SELECT 'Transaction Successful' AS message;
END //
DELIMITER ;

CALL SafeTransfer(1, 2, 100.00)

+----------------------+
| message              |
+----------------------+
| Transaction Successful |
+----------------------+