例如我有
//这只是一个虚拟的示例代码。
WHILE
BEGIN
Statement 1
GOTO RESET
Statement 2
GOTO RESET
Statement 3
GOTO RESET
END
RESET:
SET @Var = 1
// At this point, I need to come back my last position in the WHILE LOOP
我的问题是
1。可能吗?
2。如果是的话,我该怎么做?
非常感谢
答案 0 :(得分:2)
您可以使用GOTO
语法。您为Label
定义,然后为GOTO
定义该标签。像这样:
DECLARE @test INT=1
SomeName:
print 'test'
IF @test=1
BEGIN
SET @test=2
GOTO SomeName
END
这将PRINT 'test'
两次
参考here
答案 1 :(得分:0)
SQL支持GOTO
/ LABEL
:
http://msdn.microsoft.com/en-us/library/ms180188.aspx
不完全确定为什么在存储过程中需要这种精细的流量控制。也许尝试将存储过程拆分为不同的过程?
答案 2 :(得分:0)
您可以使用TRY...CATCH
块。
DECLARE @i int
SET @i = 1
WHILE @i <= 5
BEGIN
BEGIN TRY
IF @i = 3 RAISERROR('Three is an incorrect value', 11, 1)
PRINT 'Ok'
END TRY
BEGIN CATCH
PRINT 'Error'
END CATCH
SET @i = @i + 1
END