了解T-SQL GOTO

时间:2015-12-24 13:57:08

标签: sql sql-server goto

我的老师最近谈到了在管理工作室中使用的声明' GOTO'但我起初并不是很了解它。他说GOTO被用来跳转到不同的代码片段,借助我自己可以命名的标签。这是他用来代表他的例子的代码:

select 'first'

goto jump
select 'second'

jump:
select 'third'

当我执行代码时,确实会打印出“第一个'和第三个'。我现在的问题是选择的第二个'首先在那里做什么?

1 个答案:

答案 0 :(得分:3)

评论时间有点长。

在您的示例中,第二个select显然是不必要的。

GOTO是程序代码的“控制流”的一个例子。它是最早的计算机语言的构造,直接映射到处理C或汇编代码等语言时硬件的工作方式。从那时起,它已被包含在许多其他语言中。

GOTO通常会与IF一起使用。但是,T-SQL提供了更好的控制流功能,例如:

  • WHILE
  • IF / BEGIN
  • TRY / CATCH

通常,您应该使用这些结构而不是GOTO。事实上,GOTO颇具争议性。许多人认为它始终是代码不良的标志(“意大利面条代码”有时用于描述这种类型的代码)。对于像异常处理(我有时会这样做)或某些类型的状态机这样的事情,其他人会做出非常罕见的例外。

在我看来,GOTO只应在所有其他结构之后进行教学,并且仅用于非常特定的目的。