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

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 original
  1. CALL 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 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. DECLARE condicion VARCHAR(100);
  15.  
  16. SET condicion = "";
  17.  
  18. IF Run <> "" THEN
  19.     IF condicion <> "" THEN
  20.         SET condicion = CONCAT(' AND  UsuarioRun=''', Run,'''');
  21.     ELSE
  22.         SET condicion = CONCAT(' WHERE UsuarioRun=''', Run,'''');
  23.     END IF;    
  24. END IF;
  25.  
  26. IF Empresa <> "" THEN
  27.     IF condicion <> "" THEN
  28.         SET condicion = CONCAT(condicion,' AND UsuarioEmpresa=''', Empresa,'''');
  29.     ELSE
  30.         SET condicion = CONCAT(' WHERE UsuarioEmpresa=''', Empresa,'''');
  31.     END IF;    
  32. END IF;
  33.  
  34. IF Area <> "" THEN
  35.     IF condicion <> "" THEN
  36.         SET condicion = CONCAT(condicion,' AND UsuarioArea=''', Area,'''');
  37.     ELSE
  38.         SET condicion = CONCAT(' WHERE UsuarioArea=''', Area,'''');
  39.     END IF;    
  40. END IF;
  41. IF Nombre <> "" THEN
  42.     IF condicion <> "" THEN
  43.         SET condicion = CONCAT(condicion,' AND UsuarioNombre LIKE CONVERT(''%', Nombre ,'%'' using utf8) collate utf8_spanish_ci ');
  44.     ELSE
  45.         SET condicion = CONCAT(' WHERE UsuarioNombre LIKE CONVERT(''%', Nombre ,'%'' using utf8) collate utf8_spanish_ci ');
  46.     END IF;    
  47. END IF;
  48. IF Gps <> "" THEN
  49.     IF condicion <> "" THEN
  50.         SET condicion = CONCAT(condicion,' AND Sis_Usuario.GrupoSeguridadCodigo` = ''',Gps,'''');
  51.     ELSE
  52.         SET condicion = CONCAT(' WHERE Sis_Usuario.GrupoSeguridadCodigo =  ''',Gps,''' ');
  53.     END IF;    
  54. END IF;
  55. IF Region <> "" THEN
  56.     IF condicion <> "" THEN
  57.         SET condicion = CONCAT(condicion,' AND `UsuarioRegion` = CONVERT(''', Region, ''' using utf8) collate utf8_spanish_ci  ');
  58.     ELSE
  59.         SET condicion = CONCAT(' WHERE `UsuarioRegion` = CONVERT(''', Region, ''' using utf8) collate utf8_spanish_ci  ');
  60.     END IF;    
  61. END IF;
  62. IF Provincia <> "" THEN
  63.     IF condicion = " " THEN
  64.         SET condicion = CONCAT(condicion,' AND `UsuarioCiudad` = CONVERT(''', Provincia, ''' using utf8) collate utf8_spanish_ci');        
  65.     ELSE
  66.         SET condicion = CONCAT(' WHERE `UsuarioCiudad` = CONVERT(''', Provincia, ''' using utf8) collate utf8_spanish_ci');
  67.     END IF;    
  68. END IF;
  69. IF Comuna <> "" THEN
  70.     IF condicion <> "" THEN
  71.         SET condicion = CONCAT(condicion,' AND `UsuarioComuna` = CONVERT(''', Comuna , ''' using utf8) collate utf8_spanish_ci ');
  72.     ELSE
  73.         SET condicion = CONCAT(' WHERE `UsuarioComuna` = CONVERT(''', Comuna , ''' using utf8) collate utf8_spanish_ci ');
  74.     END IF;    
  75. END IF;
  76. IF TipoHorario <> "" THEN
  77.     IF condicion <> "" THEN
  78.         SET condicion = CONCAT(condicion,' AND `UsuarioTipoHorario` = CONVERT(''', TipoHorario, ''' using utf8) collate utf8_spanish_ci');
  79.     ELSE
  80.         SET condicion = CONCAT(' WHERE `UsuarioTipoHorario` = CONVERT(''', TipoHorario, ''' using utf8) collate utf8_spanish_ci');
  81.     END IF;    
  82. END IF;
  83. 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);
  84. PREPARE stmt FROM @consulta;
  85. EXECUTE stmt;
  86. END;