elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos (Moderador: Carloswaldo)
| | | |-+  Evitar mostrar errores en mysql y en vez mostrar mensaje personalizado
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Evitar mostrar errores en mysql y en vez mostrar mensaje personalizado  (Leído 9,609 veces)
Cioouw

Desconectado Desconectado

Mensajes: 23


Ver Perfil
Evitar mostrar errores en mysql y en vez mostrar mensaje personalizado
« en: 25 Abril 2010, 21:48 »

Hola .. pues tengo una duda que me anda rompiendo el coco.

Tengo un procedimiento que inserta datos en una tabla de 2 campos, el primero campo es idpermiso y el segundo es idusuario (unique), desde un procedimiento se insertan datos en la tabla.

el procedimiento es el mismo:

create procedure sp_inserta(id_usuario varchar(100))
begin
insert into permiso (idusuario) values (id_usuario);
end if //

Pues todo funciona siempre y cuando el id_usuario que se envie sea realmente 'unico' .. pero el problema viene cuando envio uno que ya existe. El procedimiento arroja un error. Hay alguna forma de evitar que muestre el error y que muestre un mensaje personalizado, algo asi como "registro no ingresado".

Gracias.


En línea

Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


WOS & Khan & Calero LDN


Ver Perfil WWW
Re: Evitar mostrar errores en mysql y en vez mostrar mensaje personalizado
« Respuesta #1 en: 25 Abril 2010, 22:03 »

Depronto, podría servirté algo así: Verificas el error que se producé y despues lo personaliza de la siguiente manera.
Código
  1. CREATE PROCEDURE sp_inserta(id_usuario VARCHAR(100))
  2. BEGIN
  3.   INSERT INTO permiso (idusuario) VALUES (id_usuario);
  4.   IF @@ERROR = 12
  5.      PRINT 'Error Personalizado'
  6. END

PD: Creo que era así. Lo codee de memoria... Revizalo!


En línea

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.
^Tifa^


Desconectado Desconectado

Mensajes: 2.804


Ver Perfil
Re: Evitar mostrar errores en mysql y en vez mostrar mensaje personalizado
« Respuesta #2 en: 26 Abril 2010, 01:43 »

Te recomiendo que investigues como se manejan los HANDLER en MySQL para captar las Excepciones. A lo mejor esto te puede ayudar:

Código
  1.  
  2. CREATE PROCEDURE sp_inserta(id_usuario CHAR(20))
  3. BEGIN
  4. DECLARE continue handler FOR sqlstate '23000' SET @x = 1;
  5. INSERT INTO ejemplo VALUES(id_usuario);
  6. IF @x = 1 THEN SELECT concat('Error llave duplicada');
  7. END IF;
  8. END;
  9. //
  10.  
  11.  
En línea

Cioouw

Desconectado Desconectado

Mensajes: 23


Ver Perfil
Re: Evitar mostrar errores en mysql y en vez mostrar mensaje personalizado
« Respuesta #3 en: 26 Abril 2010, 16:25 »

Gracias, por lo menos con eso del handler se puede especificar el error en concreto, pero que pasaria si yo no quiera saber el error especifico sino solo saber si el registro se inserto o no ¿?

Edito: SOlucionado.
Citar
declare continue handler for sqlwarning set @x=1;

Gracias.
« Última modificación: 26 Abril 2010, 16:29 por Cioouw » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines