繁体   English   中英

在什么情况下可以接受使用T-SQL GOTO语句?

[英]In what case would the use of a T-SQL GOTO statement be acceptable?

在关于Microsoft T-SQL代码格式的“宗教”讨论中,我质疑GOTO语句是否仍然以T-SQL语法提供。 在使用T-SQL的13年中,我从来没有机会使用它,并且确实不知道它是否存在。 在简要搜索文档后,我确实感到惊讶,确实存在!

我的问题是:

至少一个情况下 GOTO语句将产生执行总比一个人在使用其他高阶编程结构的解决方案?

  • 加密算法实现

我的问题不是

  • 如何在不创建完整功能的情况下使用少量功能?
  • 如何在不复制/粘贴的情况下复制错误处理功能?

我几乎从不使用GOTO ,没有它就可以轻松生活。

我考虑使用它的一种情况是当我有复杂的代码进行大量的错误检查。 我可能想在错误返回时采取一些操作, GOTO允许我为错误检查定义一个代码块。

您可以通过多种方式解决此问题,但GOTO是一个合理的选项,可以保证错误得到一致处理,并且代码不会被大量的if @Error = 0 . . .混乱if @Error = 0 . . . if @Error = 0 . . . 声明。

我在大型脚本中看到了几次goto,人们用它来提高可读性。 有时它更易读,但大多数情况下变成了意大利面条代码。

我只看到goto可能表现更好的一种情况。 它在多个while循环中。 你可以使用goto一次而不是多次中断 ,它只存在于最里面的循环中。 尽管如此,在我看来,休息并不比goto好多少,它的编程风格都不是很好。

while ...
  while ...
    while... 
    break
  break
break


while ...
  while ...
    while... 
    goto endloops

endloops:

我主要在SSIS不可用时使用GOTO语句(不要问!!)为用于ETL处理的大型存储过程提供一些控制流。 这是我唯一一次使用它们,虽然在这种情况下很有用,但它显然不是你所处的场景。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM