MySQL - Ayuda porfavor con una consulta PROCEDURE

 
Vista:

Ayuda porfavor con una consulta PROCEDURE

Publicado por paul martin romero julca (2 intervenciones) el 22/07/2012 05:38:49
Hola buenas noches, tengo una consulta miren tengo un Procedure en la que hago una consulta a la tabla PACIENTES de mi BD, donde le di como parametros 2 de entrada y 7 de salida, buena esta consulta me coge bien cuando ingreso un dato respecto con cualquier dato en pConsult_cod_paciente y un dato vacio en pConsult_nom_paciente, siendo pConsult_cod_paciente la comparacion con un campo PRIMARY KEY p.cod_paciente de mi BD en el que logicamente en mi BD solo existira un registro con un unico codigo, el error que tengo es cuando las cosas se hace inversamente cuando intento consultar dando un valor a cualquiera a pConsult_nom_paciente y un valor vacio a pConsult_nom_paciente, resulta que pConsult_nom_paciente hace una comparacion con un campo normal p.nom_paciente que almacena los nombres de los pacientes pero me ocurre el error cuando en mi BD existen mas de dos registro con el mismo nombre de pacientes votandome un error "Result consisted of more than one row" o sea el resultado consiste de mas de un registro, oz pido que me ayuden como puedo hacer que me pueda mostrar todos los datos de mi campo nombrePaciente haci tenga muchos registros con el mismo nombres y estos datos se almacenen dentro de las variables que he creado como OUT, es una pequeña conexion la cual estoy elaborandola desde JAVA. espero me puedan dar una manito Graciias ;).

-- Este es Mi Procedure
ELIMITER $$

DROP PROCEDURE IF EXISTS `consultarPaciente` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `consultarPaciente`(
IN pConsult_cod_paciente CHAR(4),
IN pConsult_nom_paciente VARCHAR(45),
OUT p_cod_paciente CHAR(4),
OUT p_nom_paciente VARCHAR(45),
OUT p_ape_paciente VARCHAR(45),
OUT p_fna_paciente DATE,
OUT p_sex_paciente VARCHAR(45),
OUT p_dir_paciente VARCHAR(45),
OUT p_tel_paciente CHAR(9)
)
BEGIN

SELECT p.cod_paciente, p.nom_paciente, p.ape_paciente, p.fna_paciente, p.sex_paciente, p.dir_paciente, p.tel_paciente
INTO p_cod_paciente, p_nom_paciente, p_ape_paciente, p_fna_paciente, p_sex_paciente, p_dir_paciente, p_tel_paciente
FROM paciente as p
WHERE
p.cod_paciente = pConsult_cod_paciente OR
p.nom_paciente = pConsult_nom_paciente;

END $$

DELIMITER ;

-- Una pequeña consulta suponiendo que en la BD existen mas registros con el name "ROSARIO"
CALL consultarPaciente('','rosario',@codPaciente,@nomPaciente,@apePaciente,@fnaPaciente,@sexPaciente,@dirPaciente,@telPaciente);

Atte. YouAnGelAzul
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ayuda porfavor con una consulta PROCEDURE

Publicado por Gonzalo GC (339 intervenciones) el 24/07/2012 02:39:29
Los nombres de personas no sirven como claves alternativas, precisamente por la razón de que es muy posible que existan homónimos.
En el caso de busquedas basadas en nombres, jamás se realizan para buscar un único registro, sino para obtener una lista de personas.
En resumen: No puedes usar un SP como el que has diseñado para realizar búsquedas basadas en nombres. No sirve.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda porfavor con una consulta PROCEDURE

Publicado por Paul Martin Romero Julca (2 intervenciones) el 30/07/2012 20:50:14
Veo que estas en lo cierto ps lo he intentado de mil formas... pero a causa de ello me queda un vacio estoy haciendo consultas mediante el JAVA desde una base de datos MySQL en la que quiero implementar una consulta pero con procedimiento en donde no me busque solo un registro unico, si no que si encuentra varios hononimos como lo dijistes que me los muestre... algo asi no se si me podrias ayudar con un simple ejemplo mediante codigo MySQL pliz te estaria muy agradecido de ante mano ps no quisiera quedar como un mediocre en este tema ya que manuales sonbre procedimientos de almacenados no hay muchos. Graciias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar