SQL Server - Variable fecha en procedimiento almacenado

   
Vista:

Variable fecha en procedimiento almacenado

Publicado por Francisco (8 intervenciones) el 15/09/2015 21:39:08
Buenas tardes, soy nuevo en sql y tengo la siguiente query que corre sin problemas en el management:

select * from datos where fecha='2015-09-02' (el campo fecha es del tipo date)

pero necesito q esta query corra dentro de un procedimiento almacenado y nose como mandar la fecha desde una aplicacion en visual basic

create procedure XX
@fecha as varchar(10) ??
@fecha as date ??

select * from datos where fecha=@fecha

En el management lo llamo asi EXEC XX '2015-09-02'

De cualquier forma me da error.

Desde ya muchas gracias.
Sds.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Wilfredo Patricio Castillo

Variable fecha en procedimiento almacenado

Es es simple

Puedes hacer algo mas o menos así:

Create Procedure PA_GetVentasByFechas
(@Desde date,
@Hasta date
)
AS
Select FechaVenta,Monto From Ventas where FechaVenta>=@Desde And FechaVenta<=@Hasta
GO


Listo, asunto arreglado, ya desde tu aplicativo le envias los parámentros @Desde y @Hasta

Saludos cordiales,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Variable fecha en procedimiento almacenado

Publicado por Francisco (8 intervenciones) el 23/09/2015 22:06:19
Gracias por la respuesta. En realidad al select lo necesito dentro de un sql dinamico, quedaria asi:

Create Procedure PA_GetVentasByFechas
(@Desde date,
@Hasta date
)
AS

DECLARE @SQL_SENTENCIA VARCHAR(5000) = ''

SET @SQL_SENTENCIA = 'SELECT COMPROB,LETRA,TERMINAL,NUMERO,PRECIO FROM VENTAS M
WHERE M.FECHA>='+@Desde+' AND M.FECHA<='+@Hasta

EXEC (@SQL_SENTENCIA)

Al compilar este codigo me da el error "The data types varchar and date are incompatible in the add operator."

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Variable fecha en procedimiento almacenado

Publicado por jams (75 intervenciones) el 23/09/2015 23:33:33
Hola buenas tardes creo que el problema puede ser el tipo de dato de tu tabla que se llama fecha que tal vez no es tipo date si no varchar podrías comentar que tipo de dato es?






Saludos y suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Variable fecha en procedimiento almacenado

Publicado por Francisco (8 intervenciones) el 25/09/2015 20:25:17
Hola, es del tipo DATE. Si podes copialo al SP y trata de compilalo en tu management apuntando a tus tablas.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Variable fecha en procedimiento almacenado

Publicado por jams (1 intervención) el 01/10/2015 17:25:05
Hola buenos días tratare de explicar lo que sucede al tratar de concatenar en una variable tipo varchar que llamas "@sql_sentencia" un texto "select ............" y una variable tipo date te marca ese error por que no se puede hacer eso, es necesario que hagas un cast de esa variable a un tipo de dato varchar cast(@desde as varchar(20)), te recomiendo que tengas cuidado en la sentencia que obtienes finalmente este correcta creo que te debería quedar algo así

SELECT COMPROB,LETRA,TERMINAL,NUMERO,PRECIO FROM VENTAS M
WHERE M.FECHA>='2015-09-29' AND M.FECHA<='2015-09-30'

cuida tus apostrofes




Saludos y suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Variable fecha en procedimiento almacenado

Publicado por Francisco (8 intervenciones) el 02/10/2015 17:49:04
Muchas gracias por tu ayuda, asi lo pude hacer. Comparto el codigo para que sea de ayuda para el q lo necesite:

ALTER PROCEDURE [dbo].[PA_PRUEBA]
@FECHAINI AS DATE,
@FECHAFIN AS DATE,
@SUCURSAL

AS

DECLARE @SQL_SENTENCIA VARCHAR(5000) = ''
DECLARE @FECINI VARCHAR(15) = LTRIM(RTRIM(CONVERT(CHAR, @FECHAINI)))
DECLARE @FECFIN VARCHAR(15) = LTRIM(RTRIM(CONVERT(CHAR, @FECHAFIN)))
DECLARE @SUC VARCHAR(2) = LTRIM(RTRIM(CONVERT(CHAR, @SUCURSAL)))

SET @SQL_SENTENCIA = 'SELECT COMPROB,LETRA,TERMINAL,NUMERO,PRECIO FROM VENTAS
WHERE FECHA>='''+@FECINI+''' AND FECHA<='''+@FECFIN+''' AND sucursal='+@SUC

EXEC (@SQL_SENTENCIA)

Saludos
Francisco
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Wilfredo Patricio Castillo

Variable fecha en procedimiento almacenado

Bueno, se te agradece tu espíritu de colaboración, pero te recomendaría que usaras sp_executesql, en lugar del EXEC que estás usando, ya que con EXEC puedes ser susceptible a inyección sql.
Te dejo esta referencia por si te sirve.

https://technet.microsoft.com/es-es/library/ms175170(v=sql.105).aspx

Saludos cordiales
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar