SQL - открытие курсора прокрутки - PullRequest
1 голос
/ 14 марта 2012

Я пытаюсь запустить исполняемый файл, в котором у меня есть обычный CURSOR и SCROLL CURSOR, смотрящий на одну таблицу.CURSOR служит для отслеживания внешнего цикла, в то время как SCROLL CURSOR помогает во внутреннем цикле.Когда я пытаюсь запустить программу, кажется, что код застревает, пытаясь открыть КУРСОР ПРОКРУТКИ (например, он выведет «ОК», но не «КОД НЕ ДОЙДЕТ ЗДЕСЬ»).Я использую 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 

Ответы [ 2 ]

0 голосов
/ 10 декабря 2017

Пожалуйста, укажите тип курсора при объявлении курсора.Возможно, что объявленный вами курсор по умолчанию принимает статический тип только для чтения.

, пожалуйста, проверьте ниже ссылку для получения более подробной информации: Тип курсора SQL Server по умолчанию

0 голосов
/ 14 марта 2012

Первый проход ... попробуйте поставить 'BEGIN' после 'AS' и добавить 'END' после 'Bunch more code' ... это может быть все, что вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...