Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Duda procedimiento

Estas en el tema de Duda procedimiento en el foro de Mysql en Foros del Web. Como puedo enseñar un mensaje de error al usuario si no introduce ningun parametro en el procedimiento siguiente: CREATE PROCEDURE `aaa`.`proc_paciente_historial` (in parametro varchar(6)) BEGIN ...
  #1 (permalink)  
Antiguo 27/02/2011, 06:14
 
Fecha de Ingreso: febrero-2011
Mensajes: 3
Antigüedad: 13 años, 2 meses
Puntos: 0
Duda procedimiento

Como puedo enseñar un mensaje de error al usuario si no introduce ningun parametro en el procedimiento siguiente:

CREATE PROCEDURE `aaa`.`proc_paciente_historial` (in parametro varchar(6))
BEGIN


declare log_error char(30);

set log_error = "Error, Introduca un DNI";

if (parametro != )
then

SELECT DNI, NOMBRE, fnaci as FECHA_NACIMIENTO, rnhabi as Nº_HABITACION,ENFERMEDAD, fech as FECHA_ENFERMEDAD
FROM pacientes,historial
WHERE rdni=dni and parametro=dni;


else
select log_error;
end if;

END $$
  #2 (permalink)  
Antiguo 27/02/2011, 08:58
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Duda procedimiento

En realidad el problema es más simple: Si no introduce ningún parámetro, el SP no se ejecutará y te devovlerá un error, sin importar qué lenguaje estés usando, porque MySQL no admite parámetros opcionales. SI el prototipo dice que hay un parámetro debes forzosamente poner uno. MySQL no te da alternativas a eso.
Además:

1) Todos los lenguajes cuentan con funciones, métodos o propiedades que te permiten saber si la ejecución de una consulta a la base de datos devuelve un error, e incluso qué numero de error y que mensaje contiene. Busca en el manual de tu lenguaje (siempre hay uno, hasta en la web).

2) La aplicación es la que debe controlar que el usuario no pueda omitir parámetros y no la base de datos. Plantearlo al revés es un error conceptual y de procesos. ¿Para qué lanzar una consulta, que requiere tiempo de comunicación, procesador y lectura de disco, si sabes a priori que no podrá responderla porque no están los parámetros necesarios?.

Regla general de desarrollos con soporte de base de datos (aprendida en clase y luego probada por experiencia): No se usa la base de datos para hacer validaciones. Las validaciones se hacen en la aplicación y de ser necesario, los datos que se piden a la base, pero no se valida en ella.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 27/02/2011, 11:57
 
Fecha de Ingreso: febrero-2011
Mensajes: 3
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Duda procedimiento

Ok. Gracias por tu respuesta

Etiquetas: procedimiento
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:31.