pregunta para que es el ESCAPE??? y para que usas el quotename??
prueba con esto:
Código SQL:
Ver originalALTER PROCEDURE [dbo].[SEL_USUARIO_BY_SEARCH] @Departamento NVARCHAR(50), @Usuario NVARCHAR(50),
@Nombre NVARCHAR(128) AS
DECLARE @SQL NVARCHAR(4000)
SET @SQL = 'SELECT U.IdUsuario, U.Departamento, D.NombreDepartamento, U.NickUsuario, U.ContrasegnaUsuario,
U.NombresUsuario + '' '' + U.PrimerApellidoUsuario + '' '' + U.SegundoApellidoUsuario Usuario,
U.EmailUsuario, U.TelefonoUsuario, CONVERT(VARCHAR, U.FechaIngresoUsuario, 103) FechaIngreso,
CONVERT(VARCHAR, U.UltimoIngresoUsuario, 103) UltimoIngreso, U.ImagenUsuario
FROM Usuarios U INNER JOIN Departamentos D ON U.Departamento = D.IdDepartamento
WHERE 1 = 1'
IF @Departamento IS NOT NULL AND @Departamento <> ''
BEGIN
SET @SQL = @SQL + ' AND (D.NombreDepartamento LIKE ''%\' + @Departamento + '%'' ESCAPE ''\''
OR D.NombreDepartamento LIKE ''%_' + @Departamento + '%'' ESCAPE ''_'')'
END
IF @Usuario IS NOT NULL AND @Usuario <> ''
BEGIN
SET @Sql = @Sql + ' AND (U.NickUsuario LIKE ''%\' + @Usuario + '%'' ESCAPE ''\''
OR U.NickUsuario LIKE ''%_' + @Usuario + '%'' ESCAPE ''_'')'
END
IF @Nombre IS NOT NULL AND @Nombre <> ''
BEGIN
SET @Sql = @Sql + ' AND (U.NombresUsuario' + ' ' + 'U.PrimerApellidoUsuario' + ' ' + 'U.SegundoApellidoUsuario LIKE ''%\' + @Nombre + '%'' ESCAPE ''\''
OR U.NombresUsuario' + ' ' + 'U.PrimerApellidoUsuario' + ' ' + 'U.SegundoApellidoUsuario LIKE ''%_' + @Nombre + '%'' ESCAPE ''_'')'
END
SET @Sql = @Sql + ' ORDER BY U.NickUsuario ASC'
BEGIN TRAN
PRINT @Sql
--EXEC(@Sql)
COMMIT TRAN
END