If the while loop hits the break command it comes out of the loop and if cursor hit the break command, how can it break entirely 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
                In SQL Server, the BREAK statement is used when you want to exit from a WHILE LOOP and execute the next statements after the loop's END statement.
Always confusing thing is which one is better; SQL While loop or cursor? While SQL While loop is quicker than a cursor, reason found that cursor is defined by DECLARE CURSOR. Every emphasis of the loop will be executed inside system memory and consuming required server assets.
The EXIT statement can be used only inside a loop; you cannot exit from a block directly. PL/SQL lets you code an infinite loop.
You can give some condition in WHILE loop that iterates on cursor. First condition would be on @@FETCH_STATUS and other would be on which you want to break loop
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;
Using BREAK statement
WHILE @@FETCH_STATUS = 0 
   BEGIN
      FETCH NEXT FROM Employee_Cursor;
      //your code
      if condition 
      BEGIN
          BREAK
      END 
   END;
CLOSE Employee_Cursor;
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With