2012-03-13 26 views
1

我想運行一個可執行文件,其中我有一個常規CURSOR和一個滾動遊標查看單個表。 CURSOR用於跟蹤外部循環,而SCROLL CURSOR則輔助內部循環。當我嘗試運行該程序時,似乎代碼被卡住以嘗試打開SCROLL CURSOR(例如,它將打印'OK',但'代碼無法觸及此處')。我正在使用SQL 2008 R2。我試着運行我的代碼的縮減版本,似乎我甚至無法在任何情況下在我的計算機上打開SCROLL CURSOR,所以我想知道它是否是一些奇怪的兼容性問題,或者我有某種錯誤的語法(即使它很簡單)。對於它的價值,在測試我的代碼時,我已經能夠在另一臺計算機上打開SCROLL CURSOR。SQL - 打開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

第一遍......嘗試在'AS'之後放置一個'BEGIN',然後在'堆滿更多的代碼'之後添加'END'......這可能就是您所需要的。

0

請在聲明遊標時放置遊標類型。因爲您聲明的遊標可能會以靜態只讀類型作爲默認值。

請查看以下鏈接瞭解更多詳情: Default type of SQL Server Cursor