我正在尝试运行一个可执行文件,其中我有一个常规CURSOR和一个SCROLL CURSOR查看单个表。 CURSOR用于跟踪外循环,而SCROLL CURSOR有助于内循环。当我尝试运行该程序时,似乎代码被卡住试图打开SCROLL CURSOR(例如它将打印'OK'但不是'CODE DOES NOT REACH HERE')。我正在使用SQL 2008 R2。我已经尝试运行我的代码的非常缩放的版本,看起来我甚至无法在我的计算机上的任何情况下打开SCROLL CURSOR所以我想知道它是否是一些奇怪的兼容性isssue或者我在某种程度上有错误的语法(即使它很简单)。值得一提的是,在测试我的代码时,我能够在另一台计算机上打开一个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
答案 0 :(得分:0)
第一次通过...尝试放置一个' BEGIN'在' AS'之后并添加' END'在收集更多代码之后......可能就是您所需要的全部代码。
答案 1 :(得分:0)
请在声明光标时放置光标类型。因为您声明的游标可能采用静态只读类型作为默认值。
请查看以下链接了解更多详情: Default type of SQL Server Cursor