Intereting Posts
Хранимые процедуры периодически прерываются! Как я могу отслеживать отношения ID / ParentID между строками таблицы? SQL. Преобразование типа данных varchar в тип данных datetime приводило к внеуровневому значению Группировать по неделям определенного месяца на сервере sql Перечислимые типы в SQL Server 2008? Business Intelligence для Visual Studio 2013 с таргетингом на SQL Server 2008 R2 Force SET IDENTITY_INSERT будет действовать быстрее с MS Access данные обновления sql во 2-й db от 1-го db только там, где существует таблица Проблемы с созданием полного текстового индекса в представлении Разница между СУБД и СУБД нахождение наиболее распространенного значения в sql и упорядочение с самого высокого до самого низкого (asc) SQL Server, почему я должен обновлять представления после изменения таблицы INSERT INTO results_table EXEC sproc из запланированного задания SQL Server продолжает подсчитывать строки SET ANSI_NULL Поведение

как вручную разбить курсор в цикле while. в sql-сервере

if while loop also having a break, if while loop hit break command it comes out of the loop and if cursor hit break command , how it come entire out of the while loop for example: DECLARE @CursorTest TABLE ( idcol INT , fld1 INT, fld2 INT, fld3 CHAR(800) ) INSERT INTO @CursorTest (fld1, fld2, fld3) SELECT 1, RAND() * 100 * DATEPART(ms, GETDATE()), LEFT(REPLICATE(CAST(NEWID() AS VARCHAR(36)),30),800) DECLARE @Variable1 INT, @Variable2 INT DECLARE CursorName CURSOR FAST_FORWARD FOR SELECT idcol FROM @CursorTest OPEN CursorName FETCH NEXT FROM CursorName INTO @Variable1 WHILE @@FETCH_STATUS = 0 BEGIN if (@Variable1 =10) BEGIN BREAK END PRINT CAST(@Variable1 AS VARCHAR(5)) FETCH NEXT FROM CursorName INTO @Variable1 END CLOSE CursorName DEALLOCATE CursorName if cursor hit break command , how it come entire out of the while loop 

если while цикл также имеет разрыв, если во время цикла команда break break выйдет из цикла, и если команда удара по команде курсора, то как она выйдет целиком из цикла while

Solutions Collecting From Web of "как вручную разбить курсор в цикле while. в sql-сервере"

Вы можете дать некоторое условие в цикле WHILE которое итерации курсора. Первое условие будет на @@FETCH_STATUS а другое – на том, на котором вы хотите разбить цикл

 WHILE @@FETCH_STATUS = 0 OR @stopLoop = false BEGIN FETCH NEXT FROM Employee_Cursor; //your code if condition BEGIN @stopLoop = true END END; CLOSE Employee_Cursor; 

Использование оператора BREAK

 WHILE @@FETCH_STATUS = 0 BEGIN FETCH NEXT FROM Employee_Cursor; //your code if condition BEGIN BREAK END END; CLOSE Employee_Cursor; 

мой код выглядит следующим образом: DECLARE @ Variable1 INT, @ Variable2 INT DECLARE CursorName CURSOR FAST_FORWARD ДЛЯ SELECT idcol

 FROM CursorTest OPEN CursorName FETCH NEXT FROM CursorName INTO @Variable1 WHILE @@FETCH_STATUS = 0 BEGIN PRINT CAST(@Variable1 AS VARCHAR(5)) FETCH NEXT FROM CursorName INTO @Variable1 END CLOSE CursorName DEALLOCATE CursorName 

если команда удара по нажатию курсора, как она вышла целиком из цикла while