- 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循环也有一个中断,如果while循环命中中断命令我退出循环并且如果光标命中break命令,它是如何完全退出while循环的
解决方法
你可以在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;