Solución:
Simplemente colóquelo antes de la expresión de tabla común:
DECLARE @FROMDATE DATETIME
DECLARE @TODATE DATETIME
select @FROMDATE=getdate()
select @TODATE =getdate()+7
declare boris cursor for
WITH DATEINFO(DATES)
AS (SELECT @FROMDATE
UNION ALL
SELECT DATES + 1
FROM DATEINFO
WHERE DATES < @TODATE)
SELECT *
FROM DATEINFO
OPTION (MAXRECURSION 0)
(Sin embargo, inserte las precauciones habituales acerca de que los cursores casi siempre son la herramienta incorrecta para el trabajo. Si puede encontrar una manera de hacer toda la operación de una manera establecida, generalmente es preferible y es probable que funcione mejor (o al menos sea más susceptible de ajuste de rendimiento))
Está bien de usar @
en un nombre de cursor pero la sintaxis que está utilizando es incorrecta.
DECLARE @adate DATETIME
DECLARE @FROMDATE DATETIME
DECLARE @TODATE DATETIME
SELECT @FROMDATE = getdate()
SELECT @TODATE = getdate() + 7
DECLARE @weekdates CURSOR;
SET @weekdates = CURSOR FOR
WITH DATEINFO(DATES)
AS (SELECT @FROMDATE
UNION ALL
SELECT DATES + 1
FROM DATEINFO
WHERE DATES < @TODATE)
SELECT *
FROM DATEINFO
OPTION (MAXRECURSION 0)
OPEN @weekdates
FETCH next FROM @weekdates INTO @adate
WHILE @@fetch_status = 0
BEGIN
PRINT 'success'
FETCH next FROM @weekdates INTO @adate
END
Cuando se declara como local @
variable, el cursor se cierra y desasigna automáticamente cuando la variable sale de su alcance.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)