Ver Mensaje Individual
  #2 (permalink)  
Antiguo 27/11/2013, 14:04
Avatar de Libras
Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 5 meses
Puntos: 774
Respuesta: Sql server dinámico

pregunta para que es el ESCAPE??? y para que usas el quotename??

prueba con esto:

Código SQL:
Ver original
  1. ALTER PROCEDURE [dbo].[SEL_USUARIO_BY_SEARCH] @Departamento NVARCHAR(50), @Usuario NVARCHAR(50),
  2. @Nombre NVARCHAR(128) AS
  3. DECLARE @SQL NVARCHAR(4000)
  4. SET @SQL = 'SELECT U.IdUsuario, U.Departamento, D.NombreDepartamento, U.NickUsuario, U.ContrasegnaUsuario,
  5. U.NombresUsuario + '' '' + U.PrimerApellidoUsuario + '' '' + U.SegundoApellidoUsuario Usuario,
  6. U.EmailUsuario, U.TelefonoUsuario, CONVERT(VARCHAR, U.FechaIngresoUsuario, 103) FechaIngreso,
  7. CONVERT(VARCHAR, U.UltimoIngresoUsuario, 103) UltimoIngreso, U.ImagenUsuario
  8. FROM Usuarios U INNER JOIN Departamentos D ON U.Departamento = D.IdDepartamento
  9. WHERE 1 = 1'
  10. IF @Departamento IS NOT NULL AND @Departamento <> ''
  11. BEGIN
  12. SET @SQL = @SQL + ' AND (D.NombreDepartamento LIKE ''%\' + @Departamento + '%'' ESCAPE ''\''
  13. OR D.NombreDepartamento LIKE ''%_' + @Departamento + '%'' ESCAPE ''_'')'
  14. END
  15. IF @Usuario IS NOT NULL AND @Usuario <> ''
  16. BEGIN
  17. SET @Sql = @Sql + ' AND (U.NickUsuario LIKE ''%\' + @Usuario + '%'' ESCAPE ''\''
  18. OR U.NickUsuario LIKE ''%_' + @Usuario + '%'' ESCAPE ''_'')'
  19. END
  20. IF @Nombre IS NOT NULL AND @Nombre <> ''
  21. BEGIN
  22. SET @Sql = @Sql + ' AND (U.NombresUsuario' + ' ' + 'U.PrimerApellidoUsuario' + ' ' + 'U.SegundoApellidoUsuario LIKE ''%\' + @Nombre + '%'' ESCAPE ''\''
  23. OR U.NombresUsuario' + ' ' + 'U.PrimerApellidoUsuario' + ' ' + 'U.SegundoApellidoUsuario LIKE ''%_' + @Nombre + '%'' ESCAPE ''_'')'
  24. END
  25. SET @Sql = @Sql + ' ORDER BY U.NickUsuario ASC'
  26. BEGIN TRAN
  27. PRINT @Sql
  28. --EXEC(@Sql)
  29. COMMIT TRAN
  30. END
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me