Я создал простой курсор в хранимой процедуре. Курсор просто перебирает все строки таблицы.
Из моего вывода кажется, что итератор извлекает n+1 строк.
Я пытался разорвать цикл while итерации, но это не решает проблему. Почему?
ALTER PROC spInsertNewCategory --spInsertNewCategory '-1','-1'
@categoryName NVARCHAR(80),
@categoryInfo NVARCHAR(80)
AS
BEGIN
DECLARE @siteLanguage_id INT
DECLARE @lang_id INT
DECLARE @default_siteLanguage INT
DECLARE cr_siteLanguage CURSOR
FOR
SELECT sl.siteLanguage_id, sl.lang_id, sl.default_siteLanguage
FROM siteLanguage sl
OPEN cr_siteLanguage
FETCH NEXT FROM cr_siteLanguage
INTO @siteLanguage_id,@lang_id,@default_siteLanguage
PRINT '@siteLanguage_id: '+ CAST(@siteLanguage_id AS NVARCHAR(3))+' fetch: '+ CAST(@@FETCH_STATUS AS NVARCHAR(5))
WHILE (@@FETCH_STATUS = 0)
BEGIN
IF (@@FETCH_STATUS=-1)
BEGIN
PRINT 'in if -1'
BREAK
END
FETCH NEXT FROM cr_siteLanguage
INTO @siteLanguage_id,@lang_id,@default_siteLanguage
PRINT '@siteLanguage_id: '+ CAST(@siteLanguage_id AS NVARCHAR(3))+' fetch: '+ CAST(@@FETCH_STATUS AS NVARCHAR(5))
END
CLOSE cr_siteLanguage
DEALLOCATE cr_siteLanguage
SELECT * FROM siteLanguage
END