MySQL存储过程在成功时对异常处理程序起作用

时间:2019-02-06 01:34:24

标签: mysql stored-procedures exceptionhandler

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

我首先添加一个用户,如果成功添加了该用户,请更新公司表。我的更新语句成功执行,我什至可以在表中看到更新后的值。但是,该过程返回“更新时发生错误”。有人可以指出我在做什么错吗?

谢谢!

0 个答案:

没有答案