2012-04-19 46 views
0

例如,我有
//这只是一个虚拟示例代码。分手WHILE,然后回来在存储过程中的最后一个位置 - SQL Server

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

在T-SQL代码中应该避免使用'WHILE'和'GOTO',因为它们是非关系和缓慢的。改为使用基于集合的操作。 – 2012-04-19 10:34:45

+0

@AnthonyFaull总是有例外,有时你必须使用while和goto。 – 2012-04-19 10:46:53

回答

2

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

DECLARE @test INT=1 

SomeName: 
    print 'test' 

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

这将PRINT 'test'两次

参考here

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 
相关问题