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

1 respuesta

Respuesta
1

El problema que encontré al momento de validar tu store, es que estas concatenando una fecha dentro de un string sin antes hacer el cambio pertinente de formato.

Intenta con esto dentro de tu EXEC:

'SELECT * FROM '+ @Tabla +' WHERE Fecha BETWEEN ''' + Cast(@Fecha1 as varchar) +''' AND '''+Cast(@Fecha2 as varchar)+''''

Como podrás observar cambie la concatenación para que ponga entre comillas simples los datos de las fechas y así poder manejar el BETWEEN mas optimo. Así mismo le hice un CAST as VARCHAR a tus variables tipo fecha para poder hacer el string de select completo.

Cualquier duda o aclaración no dudes en contactarme.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas