Nombre de tabla a través de una variable
Estoy intentando realizar una consulta mediante un store procedure con el nombre de la tabla a través de una variable debido a que así lo requiere mi aplicación.
He intentado con el siguiente código y se ejecuta correctamente
CREATE PROCEDURE dbo.GetFacturas
@Year varchar(10),
@Iniciales varchar(50),
@FacturaID int,
@TypeConsulta int
AS
Begin
DECLARE @Tabla varchar(100)
SET @Tabla = 'Facturas' + @Iniciales + @Year
IF @TypeConsulta = 1
BEGIN
EXEC('SELECT * FROM ' + @Tabla + ' WHERE FacturaID=' + @FacturaID)
END
END
El problema es cuanto intentado realizar otro tipo de consulta como esta me marcar un error : Sintaxis incorrecta cerca de '1'.
CREATE PROCEDURE dbo.GetFacturas
@Year varchar(10),
@Iniciales varchar(50),
@Fecha1 DATETIME,
@Fecha2 DATETIME,
@TypeConsulta int
AS
Begin
DECLARE @Tabla varchar(100)
SET @Tabla = 'Facturas' + @Iniciales + @Year
IF @TypeConsulta = 2
BEGIN
EXEC('SELECT * FROM '+ @Tabla +' WHERE Fecha BETWEEN ' +@Fecha +' AND '+@Fecha2)
END
END
Alguien me podría decir por que pasa esto