GO是批处理的标志,是一条或多条SQL语句的集合,SQL Server将批处理语句编译成一个可执行单元,此单元称为执行计划。
    如果只是执行一条语句,有没有GO都一样,如果多条语句之间用GO分隔开就不一样了,每个被GO分隔的语句都是一个单独的事务,一个语句执行失败不会影响其它语句执行。
    GO语句把程序分成一个个代码块,即使一个代码块执行错误,它后面的代码块任然会执行。
    每个被GO分隔的语句都是独立的事务,一个语句执行失败不会影响其它语句执行:

select * from dbo.abc
select * from dbo.test

    假设第一个查询失败了,那么第二个查询也不会执行,即没有任何加过返回。但是如果加上GO语句:

select * from dbo.abc
go
select * from dbo.test

    假设第一个查询失败了,第二查询的结果依旧会返回
    也就是说,GO是分批处理的意思,语句太长的时候使用它分批处理,go前面失败的语句,不影响后面语句的执行。

    当然,GO语句还可以这样用:

go N
select * from dbo.test

    N是常数,代表以下语句重复执行N次

总结:

    1. GO代表一个批处理的结束
    2. 你可以把每个GO之间的语句当成是一句SQL
    3. GO不是标准的语法,只是查询分析器为了区分多个批处理而设的分隔符而已;
    4. 批处理sql语句时,常在语句的结尾加入Go,Go在语句中可以界定一段语句的结尾,如变量的作用范围等。在Go 语句之前加入Return 可以跳出Go 语句段。break可以跳出While 循环。
    5. 事务是一种机制,是一个操作序列,他包含了一组数据库操作命令,并且所有的命令作为一个整体一起向系统提交或者撤消操作请求,就是说这一组数据库命令要么都执行,要么都不执行!

更多推荐

SQL GO语句