Es correcta esta sentencia?

tema enviado por Maurito22 en SQL Server
tema iniciado el 06/03/2008
Buenas a todos, estoy con un SP que me lanza este error: Servidor: mensaje 245, nivel 16, estado 1, procedimiento sp_Detallada, línea 18 Syntax error converting the varchar value 'SELECT tb_usuarios.Nombre, substring(convert(varchar, tb_almacen.Fecha, 103), 1, 10), tb_tipos.Tipo, tb_motivos.Motivo, tb_almacen.HoraIni, tb_almacen.HoraFin, tb_almacen.TotalHrs, tb_almacen.TotalDias, tb_almacen.Obs FROM (((tb_almacen INNER JOIN tb_usuarios ON tb_almacen.CodUsuario = tb_usuarios.IDUsuario) INNER JOIN tb_tipos ON tb_almacen.CodTipo =... Les coloco una de las sentencias de las cuales sospecho, para que me digan si es correcto... CREATE PROCEDURE sp_Motivos ( @nombre varchar(50), @periodo varchar(50), @fini varchar(50), @ffin varchar (50) ) AS BEGIN DECLARE @query varchar(1024) DECLARE @where bit SET @query = 'SELECT tb_usuarios.Nombre, tb_tipos.Tipo, tb_motivos.Motivo, Sum(tb_almacen.TotalHrs) As Saldo_Hrs, Sum(tb_almacen.TotalDias) As Saldo_Dias FROM (((tb_almacen INNER JOIN tb_usuarios ON tb_almacen.CodUsuario = tb_usuarios.IDUsuario) INNER JOIN tb_tipos ON tb_almacen.CodTipo = tb_tipos.IDTipo) INNER JOIN tb_motivos ON tb_almacen.CodMotivo = tb_motivos.IDMotivo) ' IF @periodo = 'Ultimo Mes' BEGIN SET @query = @query + 'WHERE tb_almacen.Mes = ' + MONTH(GETDATE()) + ' ' SET @where = 1 END ELSE IF @periodo = 'Seleccionar' BEGIN SET @query = @query + 'WHERE tb_almacen.Fecha BETWEEN Convert(datetime, '+ @fini + ', 103) AND Convert(datetime, ' + @ffin + ', 103) ' SET @where = 1 END ELSE SET @where = 0 EXECUTE (@query) END GO Este es casi todo el SP. Ven alguna parte en donde haya hecho algo mal? Espero me ayuden. Muchas gracias, Mauro