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
CREATE PROCEDURE SpBusUsuario ( IN Run VARCHAR(12), IN Empresa VARCHAR(12), IN Area INT(2), IN Nombre VARCHAR(100), IN Gps VARCHAR(50), IN Region INT(6), IN Provincia INT(6), IN Comuna INT(6), IN TipoHorario INT(10) ) BEGIN SET @consulta =CONCAT('SELECT * FROM `Sis_Usuario` INNER JOIN Sis_Areas ON Usuario_Area = Areas_Id INNER JOIN Sis_Grupo_Seguridad ON Sis_Usuario.GrupoSeguridadCodigo = Sis_Grupo_Seguridad.GrupoSeguridadCodigo INNER JOIN Asis_Horario ON UsuarioTipoHorario = Horario_Id WHERE `UsuarioRun` = CONVERT(''', Run ,''' using utf8) collate utf8_spanish_ci AND `UsuarioEmpresa` = CONVERT(''', Empresa ,''' using utf8) collate utf8_spanish_ci AND `Usuario_Area` = CONVERT(''', Area,''' using utf8) collate utf8_spanish_ci AND `UsuarioNombre` = CONVERT(''', Nombre ,''' using utf8) collate utf8_spanish_ci AND `Sis_Usuario`.`GrupoSeguridadCodigo` = CONVERT(''',Gps,''' using utf8) collate utf8_spanish_ci AND `UsuarioRegion` = CONVERT(''', Region, ''' using utf8) collate utf8_spanish_ci AND `UsuarioCiudad` = CONVERT(''', Provincia, ''' using utf8) collate utf8_spanish_ci AND `UsuarioComuna` = CONVERT(''', Comuna , ''' using utf8) collate utf8_spanish_ci AND `UsuarioTipoHorario` = CONVERT(''', TipoHorario, ''' using utf8) collate utf8_spanish_ci '); PREPARE ejecutar FROM @consulta; EXECUTE ejecutar; 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
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??