2015-02-06 2 views
6
 if while loop also having a break, if while loop hit break command i t 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. В SQL Server

ответ

12

Вы можете дайте некоторое условие в цикле 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; 
0

мой код следующим образом :: DECLARE @ Переменная1 INT, INT @ Variable2 DECLARE CURSOR CursorName FAST_FORWARD ДЛЯ ВЫБОР 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

Смежные вопросы