Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

CONTROL DE ERROR

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

1 respuesta

Hola Carmen, espero que este bien

Tu código tiene algunos errores de sintaxis. Aquí tienes una versión corregida y explicada:

Código corregido:

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;

Explicación de las correcciones:

  1. Corrección de VARCHAR(50 (opcional))

    • VARCHAR(50 (opcional)) es incorrecto. Debe ser VARCHAR(50).
  2. Falta del nombre del procedimiento

    • CREATE DEFINER=... debe ir seguido de PROCEDURE nombre_procedimiento() para definir la función almacenada.
  3. Manejador de errores EXIT HANDLER FOR XXXX

    • Si deseas capturar cualquier error SQL, usa SQLEXCEPTION.
    • Si deseas capturar errores específicos, puedes usar códigos como:
      DECLARE EXIT HANDLER FOR 1062 -- Error de clave duplicada
      DECLARE EXIT HANDLER FOR 1049 -- Base de datos desconocida
      
  4. Corrección del mensaje de error

    • La variable mensaje se usa para almacenar un mensaje genérico o personalizado.

Opcional: Mensaje dinámico con GET DIAGNOSTICS

Si 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.

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios!