2013-03-18 67 views
0

我有这个查询,并且在'''(CREATE TABLE结束)和'END'附近得到错误的语法错误。如果... BEGIN ... END

现在,这工作正常,如果我删除BEGIN和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 
+3

摆脱中间的'GO';它表示一个处理组的结束,但你已经在IF语句的中间。 – LittleBobbyTables 2013-03-18 17:07:46

回答

1

由于@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 
+0

这种工作,但提出了一个新问题。删除GO是解决方案,但问题在于INSERT INTO语句不再有效,因为它试图使用CREATE TABLE应该创建的表。我想我误解了IF,BEGIN和END的用法(我还在学习)。我打算把很多东西放在中间,但我可能无法做到。 – 2013-03-18 17:58:25

相关问题