CREATE DEFINER=... . . . BEGIN DECLARE mensaje VARCHAR(50 (opcional)); DECLARE EXIT HANDLER FOR XXXX BEGIN SET mensaje ='El mensjaje del error que en el momento se este tratando'; SELECT mensaje; END; . . . RESTO DEL CODIGO END
CREATE DEFINER=... . . . BEGIN DECLARE mensaje VARCHAR(50 (opcional)); DECLARE EXIT HANDLER FOR XXXX BEGIN SET mensaje ='El mensjaje del error que en el momento se este tratando'; SELECT mensaje; END; . . . RESTO DEL CODIGO END
Hola Carmen, espero que este bien
Tu código tiene algunos errores de sintaxis. Aquí tienes una versión corregida y explicada:
CREATE DEFINER=... PROCEDURE nombre_procedimiento()
BEGIN
DECLARE mensaje VARCHAR(50); -- Declaración de la variable (corregido el paréntesis mal colocado)
-- Manejador de errores genérico
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
SET mensaje = 'Se ha producido un error'; -- Mensaje de error
SELECT mensaje; -- Mostrar el mensaje
END;
-- RESTO DEL CÓDIGO
END;
Corrección de VARCHAR(50 (opcional))
VARCHAR(50 (opcional)) es incorrecto. Debe ser VARCHAR(50).Falta del nombre del procedimiento
CREATE DEFINER=... debe ir seguido de PROCEDURE nombre_procedimiento() para definir la función almacenada.Manejador de errores EXIT HANDLER FOR XXXX
SQLEXCEPTION. DECLARE EXIT HANDLER FOR 1062 -- Error de clave duplicada
DECLARE EXIT HANDLER FOR 1049 -- Base de datos desconocida
Corrección del mensaje de error
mensaje se usa para almacenar un mensaje genérico o personalizado.GET DIAGNOSTICSSi quieres capturar el mensaje exacto del error, puedes hacer algo como esto (MySQL 5.6+):
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
BEGIN
GET DIAGNOSTICS CONDITION 1 @error_message = MESSAGE_TEXT;
SELECT @error_message AS mensaje;
END;
Si quieres un control de errores más específico, dime qué necesitas y te ayudo a adaptarlo.