SQL脚本/存储过程中“GO”和“BEGIN ... END”之间是否存在差异?更具体地说,BEGIN ... END是否像GO一样指定批次?
答案 0 :(得分:17)
GO实际上并不是服务器理解的命令。它只是客户端工具使用的分隔符,例如,查询分析器,将SQL拆分为批次。然后,每个批次通常单独发送到服务器。客户端工具通常允许您将批处理分隔符配置为您选择的任何内容,GO是一种约定。
BEGIN / END是一个块标记,它以与花括号在其他语言中相同的方式包装一段代码。
答案 1 :(得分:7)
GO的另一个小问题。
GO之间定义的变量仅限于该区域,并且不存在于该区域之外。
答案 2 :(得分:2)
分批处理不同的语句(不能在存储过程中使用它)
用于对SP中的内容进行分组,例如C#中的{和}
IF x
BEGIN
-- do y
-- do w
END
答案 3 :(得分:2)
在t-sql中使用if时,使用begin和end语句也是一种很好的做法。如果你不使用开始和结束,那么只有if语句之后的下一个语句将作为if的一部分执行,这通常会导致错误。