Ver Mensaje Individual
  #5 (permalink)  
Antiguo 13/08/2013, 14:35
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

Amigos ya descubri que era la declaracion de condicion era varchar de largo 100 era muy poco lo cambie a 1000 y listo

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