[identity profile] langsamer.livejournal.com posting in [community profile] useful_faq
К сожалению, специфические сообщества полумертвые, потому спрошу здесь.
Дано (упрощенно):

DECLARE @cr_key_1 varchar(40), @cr_ref_id int,
@cr_reference varchar(255), @cr_ref_type varchar(20),
@cr_ref_subtype int, @test_id int, @new_test_id int

DECLARE attachmentsList CURSOR
FOR
SELECT cr.cr_key_1, cr.cr_reference, cr.cr_ref_type,
cr.cr_ref_subtype, cr.ts_test_id as test_id
FROM cros_ref cr

OPEN attachmentsList
FETCH NEXT FROM attachmentsList
INTO @cr_key_1, @cr_reference, @cr_ref_type, @cr_ref_subtype, @test_id


Сообщает мне, что "Incorrect syntax near the keyword 'into'", несмотря на то, что синтаксис списан напрямую с MSDN.

Что я делаю не так?!

Upd: вопрос исчерпан

MSDN сдох

Date: 2011-07-08 10:55 am (UTC)
From: [identity profile] smartgrinder.livejournal.com
DECLARE attachmentsList CURSOR
FOR
Может он ищет что-то типа SELECT FOR ... INTO ... DO, гадать можно долго ибо код тут не весь.

Re: MSDN сдох

Date: 2011-07-08 10:56 am (UTC)
From: [identity profile] smartgrinder.livejournal.com
В одну строку напишите
DECLARE attachmentsList CURSOR
FOR
например

Date: 2011-07-08 03:29 pm (UTC)
From: [identity profile] karma-coon.livejournal.com
может где-то точка вместо запятой? :)

я проверил на 2005 сейчас вот это, ошибок нет:

DECLARE
@cr_key_1 varchar(40), @cr_ref_id int,
@cr_reference varchar(255), @cr_ref_type varchar(20),
@cr_ref_subtype int, @test_id int, @new_test_id int

DECLARE attachmentsList CURSOR
FOR
SELECT
'aaaa' as cr_key_1,
'bbbb' as cr_reference,
'ffff' as cr_ref_type,
2 as cr_ref_subtype,
1 as test_id


OPEN attachmentsList
FETCH NEXT FROM attachmentsList
INTO @cr_key_1, @cr_reference, @cr_ref_type, @cr_ref_subtype, @test_id


close attachmentsList
deallocate attachmentsList

Date: 2011-07-08 03:37 pm (UTC)
From: [identity profile] karma-coon.livejournal.com
и вот еще пример, может пригодиться, чтобы два раза fetch не писать, как делают некоторые товарищи:

DECLARE 
 @ID_Post INTEGER,
 @Post VARCHAR(MAX);

 DECLARE PostCur CURSOR FOR
 SELECT TOP 10
   ID_Post,
   Post
 FROM Post;

OPEN PostCur;
WHILE 1 = 1
BEGIN
  FETCH NEXT FROM PostCur INTO @ID_Post, @Post
  IF @@FETCH_STATUS <> 0 
    BREAK;
  PRINT CAST(@ID_Post AS VARCHAR(11)) + ' ' + @Post;
END; 
  
CLOSE PostCur;
DEALLOCATE PostCur;