Nes*_*tor 50 sql t-sql sql-server sql-server-2008
我使用ADO.NET以及sqlcmd实用程序将SQL脚本发送到SQL Server 2008.使用;和GO分离SQL块有什么区别?
kei*_*en7 60
GO实际上并不是一个T-SQL命令.该GO命令由Microsoft工具引入,作为分离批处理语句(如存储过程结束)的一种方法.GOMicrosoft SQL堆栈工具支持,但不是其他工具的正式部分.
您不能将一个GOSQL字符串放入并将其作为ADO.NET命令对象的一部分发送,因为SQL本身不理解该术语.另一种证明这一点的方法是使用分析器:设置一些GO在查询分析器/ Management Studio 中使用的语句,然后在执行时运行分析器.您将看到它们作为单独的命令发布到服务器.
分号用于表示语句本身的结尾,不一定是整批.
http://msdn.microsoft.com/en-us/library/ms188037.aspx
Phi*_*uss 37
"GO"类似于; 在许多情况下,但实际上确实意味着批次的结束.
调用"GO"语句时会提交每个批处理,因此如果您有:
SELECT * FROM table-that-does-not-exist;
SELECT * FROM good-table;
Run Code Online (Sandbox Code Playgroud)
在您的批处理中,然后将永远不会调用好表选择,因为第一个选择将导致错误.
如果你改为:
SELECT * FROM table-that-does-not-exist
GO
SELECT * FROM good-table
GO
Run Code Online (Sandbox Code Playgroud)
第一个select语句仍然会导致错误,但由于第二个语句是自己的批处理,它仍然会执行.
GO与提交交易无关.
Bob*_*man 21
分号是一个语句分隔符.遇到分号时,不一定执行上一个语句.
GO
Run Code Online (Sandbox Code Playgroud)
表示批次结束.执行前一批语句,就像遇到块的结尾一样.
GO 2
Run Code Online (Sandbox Code Playgroud)
意味着多次执行批处理.我想我可能在生活中使用过两次这个选项.再说一遍,我不是交易DBA.
use*_*866 10
在SQL Server TSQL(2005 - 2016)下,请记住:
此外,GO可用于使用以下语法多次调用相同的DML块:
去[计数]
其中[count]是一个正整数,表示一遍又一遍地执行所述GO之前的TSQL命令块的次数.
drop view #temporary_view
GO
create view #another_view ...
- > NO ERRORS
如果您在上一个示例中使用分号替换GO,则会引发以下错误消息:
'CREATE VIEW'必须是查询批处理中的第一个语句.
| 归档时间: |
|
| 查看次数: |
32802 次 |
| 最近记录: |