primero gracias por responder mi duda.
estoy creando el procedimiento se ejecuta bien sin ningun parametro lista todo, probando de a uno cada parametro bien construye la consulta, pero cuando pruebo con varios parametros todo bien hasta el Usuario Nombre
Código SQL:
Ver originalCALL SpBusUsuario('13.899.942-4','76.047.332-4','1','patricio','','','','','');
error 1054 unknown column 'UsuarioNo' in where clause.
no puedo ver el error debe ser alguna comilla del concat pero no lo encuentro ustedes ven que esta mal
Código SQL:
Ver originalCREATE 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
DECLARE condicion VARCHAR(100);
SET condicion = "";
IF Run <> "" THEN
IF condicion <> "" THEN
SET condicion = CONCAT(' AND UsuarioRun=''', Run,'''');
ELSE
SET condicion = CONCAT(' WHERE UsuarioRun=''', Run,'''');
END IF;
END IF;
IF Empresa <> "" THEN
IF condicion <> "" THEN
SET condicion = CONCAT(condicion,' AND UsuarioEmpresa=''', Empresa,'''');
ELSE
SET condicion = CONCAT(' WHERE UsuarioEmpresa=''', Empresa,'''');
END IF;
END IF;
IF Area <> "" THEN
IF condicion <> "" THEN
SET condicion = CONCAT(condicion,' AND UsuarioArea=''', Area,'''');
ELSE
SET condicion = CONCAT(' WHERE UsuarioArea=''', Area,'''');
END IF;
END IF;
IF Nombre <> "" THEN
IF condicion <> "" THEN
SET condicion = CONCAT(condicion,' AND UsuarioNombre LIKE CONVERT(''%', Nombre ,'%'' using utf8) collate utf8_spanish_ci ');
ELSE
SET condicion = CONCAT(' WHERE UsuarioNombre LIKE CONVERT(''%', Nombre ,'%'' using utf8) collate utf8_spanish_ci ');
END IF;
END IF;
IF Gps <> "" THEN
IF condicion <> "" THEN
SET condicion = CONCAT(condicion,' AND Sis_Usuario.GrupoSeguridadCodigo` = ''',Gps,'''');
ELSE
SET condicion = CONCAT(' WHERE Sis_Usuario.GrupoSeguridadCodigo = ''',Gps,''' ');
END IF;
END IF;
IF Region <> "" THEN
IF condicion <> "" THEN
SET condicion = CONCAT(condicion,' AND `UsuarioRegion` = CONVERT(''', Region, ''' using utf8) collate utf8_spanish_ci ');
ELSE
SET condicion = CONCAT(' WHERE `UsuarioRegion` = CONVERT(''', Region, ''' using utf8) collate utf8_spanish_ci ');
END IF;
END IF;
IF Provincia <> "" THEN
IF condicion = " " THEN
SET condicion = CONCAT(condicion,' AND `UsuarioCiudad` = CONVERT(''', Provincia, ''' using utf8) collate utf8_spanish_ci');
ELSE
SET condicion = CONCAT(' WHERE `UsuarioCiudad` = CONVERT(''', Provincia, ''' using utf8) collate utf8_spanish_ci');
END IF;
END IF;
IF Comuna <> "" THEN
IF condicion <> "" THEN
SET condicion = CONCAT(condicion,' AND `UsuarioComuna` = CONVERT(''', Comuna , ''' using utf8) collate utf8_spanish_ci ');
ELSE
SET condicion = CONCAT(' WHERE `UsuarioComuna` = CONVERT(''', Comuna , ''' using utf8) collate utf8_spanish_ci ');
END IF;
END IF;
IF TipoHorario <> "" THEN
IF condicion <> "" THEN
SET condicion = CONCAT(condicion,' AND `UsuarioTipoHorario` = CONVERT(''', TipoHorario, ''' using utf8) collate utf8_spanish_ci');
ELSE
SET condicion = CONCAT(' WHERE `UsuarioTipoHorario` = CONVERT(''', TipoHorario, ''' using utf8) collate utf8_spanish_ci');
END IF;
END IF;
SET @consulta = CONCAT("SELECT * FROM `Sis_Usuario` INNER JOIN Sis_Areas ON UsuarioArea = Areas_Id INNER JOIN Sis_Grupo_Seguridad ON Sis_Usuario.GrupoSeguridadCodigo = Sis_Grupo_Seguridad.GrupoSeguridadCodigo INNER JOIN Asis_Horario ON UsuarioTipoHorario = Horario_Id ", condicion);
PREPARE stmt FROM @consulta;
EXECUTE stmt;
END;