我需要在最后使用GO命令执行命令字符串,如
exec('SELECT * FROM tblTmp where Id = 1 GO')
执行后我有
'GO'附近的语法不正确。
如果我执行exec('SELECT * FROM tblTmp GO')
一切正常
这里有什么问题?
谢谢。
答案 0 :(得分:18)
GO
不是SQL
命令,它是由osql
,sqlcmd
和SSMS
等客户端理解的批处理分隔符,但不是引擎本身
如果你在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。