sql-server – 如何在带有GO和没有GO语句的SQL Server Management Studio中执行S
发布时间:2020-05-24 14:03:17 所属栏目:MsSql 来源:互联网
导读:我有一个简单的查询 CREATE TABLE #tempTable (id int)DROP TABLE #tempTableCREATE TABLE #tempTable (id int)DROP TABLE #tempTable 根据我的理解,在第二部分中,它应该创建#tempTable. 但它显示以下错误 Msg 2714, Level 16, State 1, Line 4 The
|
我有一个简单的查询 CREATE TABLE #tempTable (id int) DROP TABLE #tempTable CREATE TABLE #tempTable (id int) DROP TABLE #tempTable 根据我的理解,在第二部分中,它应该创建#tempTable. 但它显示以下错误
我搜索了原因并发现它是由于查询的两个部分之间的GO语句.因此,正确的查询是 CREATE TABLE #tempTable (id int) DROP TABLE #tempTable GO CREATE TABLE #tempTable (id int) DROP TABLE #tempTable 我还发现GO只是告诉SSMS按顺序在每个批次中发送每个GO之间的SQL语句. 我的问题是,SQL语句是如何执行的?它不是按顺序执行的吗? 如果它按顺序执行,那为什么我的第一个查询会导致错误? 解决方法SQL Server documentation很好地解释了这一点.在您的特定情况下,问题是编译时错误与执行时错误. 这是如何运作的?没有GO分隔语句,所有语句都是同时编译的.问题是第三个语句是CREATE TABLE语句,表已经存在.所有发生的事情都是解析和编译语句. 使用GO,前两个语句被编译和执行.瞧!第三个语句中没有CREATE表. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
