
Capturar error data to long en procedimiento
Publicado por Luis (2 intervenciones) el 19/05/2017 22:58:22
Hola gente del foro,
Me gustaría que me ayudaran con un problema que tengo actualmente para capturar el error de data too long en un procedimiento almacenado, a continuación se los muestro:
Como pueden ver estoy manejando el control de errores a traves de handler pero cuando ingreso una longitud mayor a 10 caracteres en el parámetro de entrada el handler no actúa, sino que se sale de la ejecución del procedimiento donde al contrario debería mostrar un mensaje con el número y mensaje del error.
Agradezco su ayuda, muchas gracias
Me gustaría que me ayudaran con un problema que tengo actualmente para capturar el error de data too long en un procedimiento almacenado, a continuación se los muestro:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
CREATE PROCEDURE `P_CONSULTAR_COBERTURA`(
IN PI_CODIGO VARCHAR(10),
OUT CD_ERROR INT,
OUT DE_ERROR VARCHAR(100)
)
BEGIN
DECLARE _countRow INT DEFAULT -1;
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
SET DE_ERROR = CONCAT('ERROR: ', MYSQL_ERRNO, ' - ', MESSAGE_TEXT);
ROLLBACK;
END;
DECLARE EXIT HANDLER FOR SQLWARNING
BEGIN
SET DE_ERROR = CONCAT('ERROR: ', MYSQL_ERRNO, ' - ', MESSAGE_TEXT);
ROLLBACK;
END;
IF LENGTH(PI_CODIGO) <= 10 && PI_CODIGO REGEXP '^[A-Z]{1,10}[^0-9]$' THEN
START TRANSACTION;
SELECT TX_TIPO, CODIGO, NOMBRE, ESTATUS
FROM COBERTURA
WHERE COIGO = PI_CODIGO;
SET _countRow = FOUND_ROWS( );
SET CD_ERROR = 0;
SET DE_ERROR = CONCAT('Consulta exitosa');
COMMIT;
ELSE
START TRANSACTION;
SELECT TX_TIPO, CODIGO, NOMBRE, ESTATUS
FROM COBERTURA;
SET _countRow = FOUND_ROWS( );
SET CD_ERROR = 0;
SET DE_ERROR = CONCAT('Consulta exitosa');
COMMIT;
END IF;
IF(_countRow < 1) THEN
SET CD_ERROR = -1;
SET DE_ERROR = CONCAT('Fallo la operacion');
END IF;
END
Como pueden ver estoy manejando el control de errores a traves de handler pero cuando ingreso una longitud mayor a 10 caracteres en el parámetro de entrada el handler no actúa, sino que se sale de la ejecución del procedimiento donde al contrario debería mostrar un mensaje con el número y mensaje del error.
Agradezco su ayuda, muchas gracias
Valora esta pregunta


0