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'2回になります

ここを参照

于 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 に答える