SQL-打开滚动游标



我正在尝试运行一个可执行文件,其中我有一个常规CURSOR和一个SCROLL CURSOR来查看单个表。CURSOR用于跟踪外循环,而SCROLL CURSOR辅助内循环。当我尝试运行该程序时,似乎代码在试图打开滚动光标时被卡住了(例如,它会打印"OK",但不会打印"code not REACH HERE")。我使用的是SQL 2008 R2。我试着运行了一个非常缩小的代码版本,但在任何情况下,我都无法在电脑上打开SCROLL CURSOR,所以我想知道这是某种奇怪的兼容性问题,还是我有错误的语法(尽管它很简单)。值得一提的是,在测试我的代码时,我已经能够在另一台计算机上打开SCROLL CURSOR。

你知道是什么原因造成的吗?我已经在下面复制了我试图运行的代码(用于声明所有变量的伪代码)。提前谢谢。

create proc expiration_exec2
AS
SET NOCOUNT ON
DECLARE bunch of @variables
...
DECLARE cursor_main CURSOR FOR
SELECT Member_ID,redeemed_month,activity_month,tenure_month,min_pts,expired_pts,closed_pts,tenure_quarter,enrollment_month
FROM HIST_TRIANGLE
OPEN cursor_main
FETCH NEXT FROM cursor_main
INTO @account,@r_month,@e_month,@tenure_month,@min_pts,@expired_pts,@closed_pts,@tenure_quarter,@enrollment_month
DECLARE cursor_secondary CURSOR SCROLL FOR
SELECT Member_ID,redeemed_month,activity_month,min_pts,expired_pts,closed_pts
FROM HIST_TRIANGLE
PRINT 'OK'
OPEN cursor_secondary
FETCH NEXT FROM cursor_secondary
INTO @account2,@r_month2,@e_month2,@min_pts2,@expired_pts2,@closed_pts2
PRINT 'CODE DOES NOT REACH HERE'
...
Bunch more code 

第一次通过…尝试在"AS"后面加一个"BEGIN",并在"bunk more code"后面加上"END"。。。这可能就是你所需要的。

请在声明游标时放入游标类型。因为您声明的游标可能将静态只读类型作为默认类型。

请查看以下链接以了解更多详细信息:SQL Server游标的默认类型

最新更新