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