“和”的区别是什么&引用;及;围棋;在T-SQL中?
我使用ADO.NET和sqlcmd实用程序将SQL脚本发送到SQL Server 2008。使用“和”的区别是什么&引用;及;围棋;在T-SQL中?,sql,sql-server,sql-server-2008,tsql,Sql,Sql Server,Sql Server 2008,Tsql,我使用ADO.NET和sqlcmd实用程序将SQL脚本发送到SQL Server 2008。使用有什么区别和转到来分隔SQL块?分号是语句分隔符。遇到分号时,不一定执行前面的语句 GO 表示批次的结束。执行前一批语句,就像遇到块的结尾一样 GO 2 表示多次执行批处理。我想我这辈子可能已经用过两次了。再说一次,我不是一个DBA的贸易。我想;字符分隔SQL命令列表,GO只是指示SQL Server提交前面的所有命令。'GO'通常用于指示一批SQL语句的结束,这意味着您可以将一个开始事务和结束事
有什么区别
和转到
来分隔SQL块?分号是语句分隔符。遇到分号时,不一定执行前面的语句
GO
表示批次的结束。执行前一批语句,就像遇到块的结尾一样
GO 2
表示多次执行批处理。我想我这辈子可能已经用过两次了。再说一次,我不是一个DBA的贸易。我想;字符分隔SQL命令列表,GO只是指示SQL Server提交前面的所有命令。'GO'通常用于指示一批SQL语句的结束,这意味着您可以将一个
开始事务
和结束事务
打包到一个可能同时失败或成功的语句集合中
“;”通常用于将多个SQL语句彼此分离。这在需要返回多个记录集的SQL脚本中很明显,例如“从表1中选择*”;从表2中选择*这将在客户端产生两个独立的记录集。“GO”类似于;在许多情况下,但实际上意味着一批的结束
调用“GO”语句时会提交每个批,因此如果您有:
SELECT * FROM table-that-does-not-exist;
SELECT * FROM good-table;
在批处理中,将永远不会调用“良好表选择”,因为第一次选择将导致错误
如果您有:
SELECT * FROM table-that-does-not-exist
GO
SELECT * FROM good-table
GO
第一条select语句仍会导致错误,但由于第二条语句在其自己的批处理中,因此它仍将执行
GO与提交事务无关。
GO
实际上不是一个T-SQL命令。GO
命令是由Microsoft工具引入的,用于分离批处理语句,例如存储过程的结尾GO
受Microsoft SQL堆栈工具支持,但不是其他工具的正式组成部分
不能将GO
放入SQL字符串中,并将其作为ADO.NET命令对象的一部分发送,因为SQL本身不理解该术语。演示这一点的另一种方法是使用探查器:在QueryAnalyzer/ManagementStudio中设置一些使用GO
的语句,然后在执行时运行探查器。您将看到它们作为单独的命令发布到服务器
分号用于表示语句本身的结束,而不一定是整个语句的结束
GO命令表示批次的结束。 因此,GO命令之后,GO之前声明的所有变量都无效。 不使用分号结束批处理 如果要在过程中使用DML命令,请使用分号代替GO。 例如:
CREATE PROCEDURE SpMyProc
@myProcParam VARCHAR(20)
AS
DECLARE @myOtherParam INT = 5
;DISABLE TRIGGER ALL ON tMyTable
UPDATE tMyTable SET myVar = @myProcParam, mySecondVar = @myOtherParam
;ENABLE TRIGGER OLL ON tMyTable
- 分号(;)是块终止符
- GO是一个批处理终结者
转到
创建视图#另一个_视图。。。
-->没有错误 如果在上一个示例中用分号替换GO,则会引发以下错误消息:
“CREATE VIEW”必须是查询批处理中的第一条语句。我启动了一个connect,试图使GO成为一个有效的t-sql命令:那么,我们如何知道sql脚本中的哪些语句是sql语句并且需要分号,而sql脚本中的哪些语句不是sql语句,因此不需要分号呢?@EdElliott的新位置建议:传奇!前几天我一直在寻找,最完整的答案。尤其是(3)这一点,如果被忽视,将极有可能导致脚本失败。