2010-10-11 72 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