Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/08/2013, 08:16
Avatar de Killerx_8937
Killerx_8937
 
Fecha de Ingreso: noviembre-2006
Mensajes: 99
Antigüedad: 18 años
Puntos: 0
Procedimiento almacenado para busqueda

Hola Foreros.

les cuento que llevo algo de tiempo desarrolando con php y mysql, pero ahora estoy emprezando con php poo y mysqli con procedimientos almacenados todo bien hasta cuando quise hacer una busqueda.

tengo un formulario de busqueda el cual tiene varios campos
Run,Empresa, Area, Horario, grupodeseguridad,nombre, direccion etc..
quiero hacer busqueda por uno o varios de los campos del formulario, anteriormente yo creaba la consulta validando los campos del formulario en blanco y construyrndo la consulta pero ahora con los procedimientos almacenados no se como hacerlo

Código SQL:
Ver original
  1. CREATE PROCEDURE SpBusUsuario
  2. (
  3.     IN Run VARCHAR(12),
  4.     IN Empresa VARCHAR(12),
  5.     IN Area INT(2),
  6.     IN Nombre VARCHAR(100),
  7.     IN Gps VARCHAR(50),
  8.     IN Region INT(6),
  9.     IN Provincia INT(6),
  10.     IN Comuna INT(6),
  11.     IN TipoHorario INT(10)
  12. )
  13. BEGIN
  14.     SET @consulta =CONCAT('SELECT *
  15.    FROM `Sis_Usuario`
  16.    INNER JOIN Sis_Areas ON Usuario_Area = Areas_Id
  17.    INNER JOIN Sis_Grupo_Seguridad ON Sis_Usuario.GrupoSeguridadCodigo = Sis_Grupo_Seguridad.GrupoSeguridadCodigo
  18.    INNER JOIN Asis_Horario ON UsuarioTipoHorario = Horario_Id
  19.    WHERE `UsuarioRun` = CONVERT(''', Run ,''' using utf8) collate utf8_spanish_ci
  20.    AND `UsuarioEmpresa` = CONVERT(''', Empresa ,''' using utf8) collate utf8_spanish_ci
  21.    AND `Usuario_Area` = CONVERT(''', Area,''' using utf8) collate utf8_spanish_ci
  22.    AND `UsuarioNombre` = CONVERT(''', Nombre ,''' using utf8) collate utf8_spanish_ci
  23.    AND `Sis_Usuario`.`GrupoSeguridadCodigo` =  CONVERT(''',Gps,''' using utf8) collate utf8_spanish_ci
  24.    AND `UsuarioRegion` = CONVERT(''', Region, ''' using utf8) collate utf8_spanish_ci  
  25.    AND `UsuarioCiudad` = CONVERT(''', Provincia, ''' using utf8) collate utf8_spanish_ci
  26.    AND `UsuarioComuna` = CONVERT(''', Comuna , ''' using utf8) collate utf8_spanish_ci
  27.    AND `UsuarioTipoHorario` = CONVERT(''', TipoHorario, ''' using utf8) collate utf8_spanish_ci ');
  28.     PREPARE ejecutar FROM @consulta;
  29.     EXECUTE ejecutar;
  30. END;

si llamo al procedimiento almacenado con todos los campos llenos me realiza la busqueda pero al faltar alguno no

Código SQL:
Ver original
  1. CALL SpBusUsuario('13.899.942-4','76.047.332-4','1','Patricio Carrasco O.','ADMINISTRADOR','13000','13100','13124','1');

hay alguna forma de crear el procedimiento y que al ser llamado verifique cuales valores de laviables estan en blanco u no las considere en la consulta.

me explique bien??