MySQL中的HANDLER是如何实现的?

HANDLER in MySQL how is it implemented?

谢谢能帮帮我的人

我正在 Mysql 做手术。一切顺利,直到我尝试在一段时间内实现 HANDLER。

到目前为止一切正常,保存我的程序没有错误:

BEGIN
        SET N_CONT=0;
        SET N_TOTL=5;
            WHILE N_CONT <= N_TOTL DO
                
            
                SET N_CONT = N_CONT +1;
            END WHILE;
    
    END

当我尝试在其中放置一个处理程序时,出现错误,但我不明白为什么:

BEGIN
        SET N_CONT=0;
        SET N_TOTL=5;
            WHILE N_CONT <= N_TOTL DO
                DECLARE EXIT HANDLER FOR SQLEXCEPTION
                    BEGIN
                    -- cuerpo handler
                    END;
            
                SET N_CONT = N_CONT +1;
            END WHILE;
    
    END

我做错了什么?有人知道吗?

我认为您需要将 WHILE 的主体包裹在 BEGIN...END 中才能在其中使用 DECLARE 语句。

BEGIN
    SET N_CONT=0;
    SET N_TOTL=5;
    WHILE N_CONT <= N_TOTL DO
        BEGIN
            DECLARE EXIT HANDLER FOR SQLEXCEPTION
                BEGIN
                -- cuerpo handler
                END;
        
            SET N_CONT = N_CONT +1;
        END
    END WHILE;
END

谢谢巴尔马尔。你的解决方案对我有用。

BEGIN
    SET N_CONT=0;
    SET N_TOTL=5;
    WHILE N_CONT <= N_TOTL DO
        BEGIN
            DECLARE EXIT HANDLER FOR SQLEXCEPTION
                BEGIN
                -- cuerpo handler
                END;
    SET N_CONT = N_CONT +1;
        END;
    END WHILE;
END

它只是显示一个错误,但添加了“;”最后,它修复了我。

谢谢!