2015-02-06 11 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 

se ciclo while anche avendo una pausa, se pur comando break ciclo colpito viene fuori dal giro e se il comando del cursore colpire pausa, come è venuto tutto fuori dal giro, mentrecome interrompere manualmente il cursore all'interno di un ciclo while. in sql server

risposta

12

Puoi dare qualche condizione nel ciclo WHILE che itera sul cursore. Prima condizione sarebbe sulla @@FETCH_STATUS e altri sarebbe su cui si vuole rompere ciclo

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; 

Utilizzando BREAK

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

il mio codice come segue :: DECLARE @ Variabile1 INT, @ Variabile2 INT DICHIARARE CursorName CURSORE FAST_FORWARD PER SELEZIONA 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 

se il cursore ha premuto il comando break, come viene fuori dal ciclo while

Problemi correlati