【问题标题】:SQL GOTO statement in a script with multiple GO具有多个 GO 的脚本中的 SQL GOTO 语句
【发布时间】:2010-10-11 19:59:01
【问题描述】:

如果某个条件成立,我需要不出错地退出 SQL 脚本。我读过 1 解决方案是 raiseerror 错误代码 20+ 和 with log 参数。但这样做的限制是我只能以管理员身份执行该操作,并且与数据库的连接将被中止。

另外,我尝试使用 GOTO 并跳转到脚本的末尾,但它不起作用,因为我在脚本中间有多个 GO。还有其他解决方案吗?

IF <some condition> BEGIN
GOTO Finished;
END
GO

Finished:
SELECT 'Done'

谢谢!

【问题讨论】:

  • SQL 中没有GOTO。您可能是指一种特定的方言吗?
  • @Ignacio Vazquez-Abrams - t-sql 有一个 GOTO 语句。
  • 是的,t-sql。如果我在跳转之前声明了标签,那么一切都很好。否则,它会抱怨它未声明

标签: tsql goto raiseerror


【解决方案1】:

goto 不能跳过go。您必须重新测试每个块中的条件:

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

【讨论】:

  • +1,要么就是这个,要么用EXEC(@SQL)这个需要GO的东西,然后就可以用GOTO了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-31
相关资源
最近更新 更多