2010-10-11 44 views
3

如果某個條件成立,我需要退出SQL腳本而不出錯。我讀過1解決方案將輸入raiseerror,錯誤代碼爲20+和with log參數。但限制因素是我可以執行,只有作爲管理員和連接到數據庫將被中止。具有多個GO的腳本中的SQL GOTO語句

另外,我嘗試使用GOTO並跳轉到腳本結尾,但它不起作用,因爲我在腳本中間有多個GO。還有另一種解決方案嗎?

IF <some condition> BEGIN
GOTO Finished;
END
GO

Finished:
SELECT 'Done'

謝謝!

+0

SQL中沒有'GOTO'。你也許是指一種特定的方言? – 2010-10-11 20:00:49

+3

@Ignacio Vazquez-Abrams -t-sql有一個GOTO語句。 – dcp 2010-10-11 20:05:15

+0

是啊,t-sql。如果我在跳到它之前宣佈標籤,那麼一切都可以。否則,它會抱怨它沒有聲明 – kateroh 2010-10-11 20:13:17

回答

3

goto不能跳過go。您必須重新測試每個塊中的條件:

IF NOT <some condition> 
BEGIN 
    ... 
END 
GO 
IF NOT <some condition> 
BEGIN 
    ... 
END 
GO 
IF NOT <some condition> 
... 
+1

+1,它可能是這個或者使用'EXEC(@SQL)'來處理需要GO的東西,然後你可以使用'GOTO'。 – 2010-10-11 20:38:54