Sql 如果…开始…结束

Sql 如果…开始…结束,sql,if-statement,create-table,Sql,If Statement,Create Table,我有这个查询,在“')(创建表的末尾)和“end”附近出现了不正确的语法错误 现在,如果我删除开始行和结束行,这很好,但我不完全确定它到底出了什么问题 注意:这不是成品,因为在这之后会有更多的内容,在这之前会有更多的内容。这只是一个大得多的项目的一部分,但这些部分是相当独立的,并且除了[ARCSCON]表的存在之外,此查询中没有任何部分依赖于任何其他部分 谁能告诉我我做错了什么 IF EXISTS( SELECT * FROM sys.objects WHERE OBJECT_ID

我有这个查询,在“')(创建表的末尾)和“end”附近出现了不正确的语法错误

现在,如果我删除开始行和结束行,这很好,但我不完全确定它到底出了什么问题

注意:这不是成品,因为在这之后会有更多的内容,在这之前会有更多的内容。这只是一个大得多的项目的一部分,但这些部分是相当独立的,并且除了[ARCSCON]表的存在之外,此查询中没有任何部分依赖于任何其他部分

谁能告诉我我做错了什么

IF  EXISTS( SELECT * FROM sys.objects 
    WHERE OBJECT_ID = OBJECT_ID(N'[dbo].[ARCSCON]'))
BEGIN

CREATE TABLE  [tempSAItems](        
            [Id] int identity(44444,1),
            [Name] nvarchar(55),
            [Type] nvarchar(50) DEFAULT 'Service Agreement',
            [Inactive] bit DEFAULT '0',
            [Purchased] bit DEFAULT '0',
            [MSDS] bit DEFAULT '0',
            [IncomeAccountID] int DEFAULT '7',
            [LaborCoverd] bit DEFAULT '0',
            [PartsCoverd] bit DEFAULT '0',
            [LifeTime] bit DEFAULT '0',
            [TravelCoverd] bit DEFAULT '0',
            [NumVisits] int, --[DURATION]
            [bLaborItem] bit DEFAULT '0',
            [bDirectCost] bit DEFAULT '0',
            [bAddToSales] bit DEFAULT '0',
            [sCostingMethod] nvarchar(50) DEFAULT 'Average Cost')
GO

INSERT INTO [tempSAItems]([Name])
SELECT DISTINCT [SCHEDTYPE]
FROM [ARCSCON]
GO  


END

正如@LittleBoobyTables所评论的,只是去掉了中间写的
Go

IF  EXISTS( SELECT * FROM sys.objects 
    WHERE OBJECT_ID = OBJECT_ID(N'[dbo].[ARCSCON]'))
BEGIN

CREATE TABLE  [tempSAItems](        
            [Id] int identity(44444,1),
            [Name] nvarchar(55),
            [Type] nvarchar(50) DEFAULT 'Service Agreement',
            [Inactive] bit DEFAULT '0',
            [Purchased] bit DEFAULT '0',
            [MSDS] bit DEFAULT '0',
            [IncomeAccountID] int DEFAULT '7',
            [LaborCoverd] bit DEFAULT '0',
            [PartsCoverd] bit DEFAULT '0',
            [LifeTime] bit DEFAULT '0',
            [TravelCoverd] bit DEFAULT '0',
            [NumVisits] int, --[DURATION]
            [bLaborItem] bit DEFAULT '0',
            [bDirectCost] bit DEFAULT '0',
            [bAddToSales] bit DEFAULT '0',
            [sCostingMethod] nvarchar(50) DEFAULT 'Average Cost')
--GO
^Here

INSERT INTO [tempSAItems]([Name])
SELECT DISTINCT [SCHEDTYPE]
FROM [ARCSCON]
GO  


END

摆脱中间的
GO
;它指示处理组的结束,但是在IF语句的中间得到了它。这样的工作,但是提出了一个新的问题。删除GO是解决方案,但问题是INSERT INTO语句不再工作,因为它试图使用CREATE table应该创建的表。我想我只是误解了IF、BEGIN和END的用法(我还在学习)。我打算在两者之间做很多事情,但我可能做不到。