日期:2014-05-17  浏览次数:20629 次

"GO"批处理的疑问
一个SQL文件,内容如下:

--创建存储过程

go

--创建作业

go

--创建触发器

go

--备份数据库

问题:
    在这个SQL文件下有“创建存储过程”、“创建作业”、“创建触发器”、“备份数据库”四个过程,这四个过程可以一次全部执行吧???   直接执行SQL文件

     还是要这四个过程分开一个“Go”,一个“Go”的单独执行???

------解决方案--------------------
写有go可以一次执行
------解决方案--------------------
一个go一个go的执行方式,如果后面的go语句内容错误,前面的会一样执行。
你可以自己做个试验
------解决方案--------------------
一次执行就可以了。
这里是MSDN的解释:
SQL Server utilities interpret GO as a signal that they should send the current batch of Transact-SQL statements to an instance of SQL Server.The current batch of statements is composed of all statements entered since the last GO, or since the start of the ad hoc session or script if this is the first GO. 
------解决方案--------------------
GO 表示上面语句执行一次
你想执行两次
可以写
select 1
GO 2
------解决方案--------------------
每一个go就是一个批处理,可以一次性执行,但是每个go是一个事务,每个go之间具有ACID特性。同时,有些语句必须要加go,有些却不允许加GO,这些要多多体会。
------解决方案--------------------
引用:
每一个go就是一个批处理,可以一次性执行,但是每个go是一个事务,每个go之间具有ACID特性。同时,有些语句必须要加go,有些却不允许加GO,这些要多多体会。


胡说
------解决方案--------------------
创建存储过程,触发器之类的时候,如果你不加GO,就会把你下面一句非ALTER ,CREATE开头的语句一起创建到你的存储过程或者触发器里面,你可以试试,前几天刚被害一次
如果在查询分析器里面执行,建议最好都加GO
如果是程序里面,就看你的程序支持不支持了,ADO里面好像不能有GO,可以用分号分割
------解决方案--------------------
这个go只是在SQL Server的SQL Server Management Studio中使用,表示一个批处理,没什么特定的意义。

像上面说的:

select * from xx

go n

能实现把上面的语句执行n次的效果,相当于n个批处理。
------解决方案--------------------
我一直用go,然后不知道什么问题
------解决方案--------------------
引用:
GO 表示上面语句执行一次
你想执行两次
可以写
select 1
GO 2


第 2 行: '2' 附近有语法错误。