GO和BEGIN之间的区别......结束

时间:2008-12-30 19:10:15

标签: sql-server

SQL脚本/存储过程中“GO”和“BEGIN ... END”之间是否存在差异?更具体地说,BEGIN ... END是否像GO一样指定批次?

4 个答案:

答案 0 :(得分:17)

GO实际上并不是服务器理解的命令。它只是客户端工具使用的分隔符,例如,查询分析器,将SQL拆分为批次。然后,每个批次通常单独发送到服务器。客户端工具通常允许您将批处理分隔符配置为您选择的任何内容,GO是一种约定。

BEGIN / END是一个块标记,它以与花括号在其他语言中相同的方式包装一段代码。

答案 1 :(得分:7)

GO的另一个小问题。

GO之间定义的变量仅限于该区域,并且不存在于该区域之外。

答案 2 :(得分:2)

GO

分批处理不同的语句(不能在存储过程中使用它)

BEGIN .. END

用于对SP中的内容进行分组,例如C#中的{和}

IF x
BEGIN 
   -- do y
   -- do w
END

答案 3 :(得分:2)

在t-sql中使用if时,使用begin和end语句也是一种很好的做法。如果你不使用开始和结束,那么只有if语句之后的下一个语句将作为if的一部分执行,这通常会导致错误。