最后用GO执行命令字符串

时间:2011-03-28 16:30:07

标签: sql sql-server

我需要在最后使用GO命令执行命令字符串,如

exec('SELECT * FROM tblTmp where Id = 1 GO')

执行后我有

  

'GO'附近的语法不正确。

如果我执行exec('SELECT * FROM tblTmp GO')一切正常

这里有什么问题?

谢谢。

2 个答案:

答案 0 :(得分:18)

GO不是SQL命令,它是由osqlsqlcmdSSMS等客户端理解的批处理分隔符,但不是引擎本身

如果你在SSMS中写下这样的内容:

SELECT  1
GO
SELECT  2
GO

,引擎发送两个批处理,每个批处理中有一个语句,而不是一个包含两个语句的批处理。

在第二个查询中,GO被视为表tblTmp的别名。

只需从查询中删除GO即可。

答案 1 :(得分:2)

您不需要将GO用于单个SQL语句。只有在将多个语句批处理为单个脚本时,才需要使用分隔符。此外,如果您以编程方式执行这些操作,则应使用分号(;)语句终止符而不是GO来分隔SQL语句。

这是一个方便的SQL Server Central article on the usage of GO and the semicolon