我需要一个游标用于以下查询,以便可以循环访问以获取/更新/插入一些其他数据。有人可以帮我吗?
DECLARE @FROMDATE DATETIME DECLARE @TODATE DATETIME SELECT @FROMDATE = Getdate() SELECT @TODATE = Getdate() + 7 ;WITH DATEINFO(DATES) AS (SELECT @FROMDATE UNION ALL SELECT DATES + 1 FROM DATEINFO WHERE DATES < @TODATE) SELECT * FROM DATEINFO OPTION (MAXRECURSION 0)
我尝试了很多方法,但是没有找到任何可行的方法。
我正在使用
declare @adate datetime DECLARE @FROMDATE DATETIME DECLARE @TODATE DATETIME select @FROMDATE=getdate() select @TODATE =getdate()+7 declare @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 close @weekdates deallocate @weekdates
还是我出错了
只需将其放在通用表表达式之前即可:
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)
(但是,插入关于游标的通常的警告几乎总是会成为错误的工作工具。如果您可以找到一种以基于集合的方式完成整个操作的方法,则通常是更可取的,并且可能会表现得更好(或者至少会更好)适用于性能调整))