0

例如我有
// 这只是一个虚拟示例代码。

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. 如果是,我该怎么做?
非常感谢

4

3 回答 3

2

您可以使用GOTO语法。你定义Label然后你GOTO那个标签。像这样:

DECLARE @test INT=1

SomeName:
    print 'test'

IF @test=1
BEGIN
    SET @test=2
    GOTO SomeName
END

这将PRINT 'test'两次

参考这里

于 2012-04-19T06:45:49.840 回答
0

SQL 支持GOTO/ LABEL: http://msdn.microsoft.com/en-us/library/ms180188.aspx

不完全确定为什么在存储过程中需要如此精细的流控制。也许尝试将存储的过程分成不同的过程?

于 2012-04-19T06:43:00.577 回答
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
于 2012-04-19T11:53:05.203 回答