Las declaraciones de HANDLER deben ser las últimas definiciones antes de cualquier sentencia SQL que realice una operación, es decír, debe estar al final de todos los DECLARE y antes de cualquier SET, sentencia DML, DDL o lo que sea.
Esto esta bien:
Código sql:
Ver originalDECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET @flag = 1;
SET @flag=0;
Esto también:
Código SQL:
Ver originalDECLARE flag INT DEFAULT 0;
DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET flag = 1;
Esto NO:
Código sql:
Ver originalDECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET flag = 1;
DECLARE flag INT DEFAULT 0;
Esto tampoco:
Código sql:
Ver originalSET @flag=0;
DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET @flag = 1;