Хранимая процедура MySQL делает обработчику исключений в случае успеха - PullRequest
0 голосов
/ 06 февраля 2019
Here is my MySQL Procedure

CREATE PROCEDURE sw.registerUser
   (IN firstName VARCHAR(100), IN lastName VARCHAR(100), IN companyID INT)
BEGIN
        DECLARE UserID  INT ;
        DECLARE HAS_ERROR BOOL;
        DECLARE code CHAR(5) DEFAULT '00000';
        DECLARE msg TEXT; 
        DECLARE rows INT;
        DECLARE result TEXT;

        DECLARE EXIT HANDLER FOR SQLEXCEPTION
        BEGIN
            GET DIAGNOSTICS CONDITION 1
            code = RETURNED_SQLSTATE, msg = MESSAGE_TEXT;
            SELECT CONCAT('insert users failed, error = ',code,', message = ',msg);
            ROLLBACK;
        END;

        insert into USERS(firstName,lastName) values (firstName,lastName);
        SET UserID = LAST_INSERT_ID();

        -- Add to company table
        BEGIN
            DECLARE EXIT HANDLER FOR SQLEXCEPTION SET HAS_ERROR=1;
            SELECT 'Error occurred on update';
            update company set USERREG=1 where ID=companyID;

        END;  

        commit;
END

Сначала я добавляю пользователя, и, если пользователь успешно добавлен, обновите таблицу компании.Мой оператор обновления успешно выполняется, и я даже вижу обновленное значение в таблице.Однако процедура возвращает сообщение «Произошла ошибка при обновлении».Может кто-нибудь указать, что я делаю не так?

Спасибо!

...