2013-03-18 1 views
0

У меня есть этот запрос, и я получаю неправильные ошибки синтаксиса около ')' (конец CREATE TABLE) и около 'END'.IF ... BEGIN ... END

Теперь это отлично работает, если я удаляю строки BEGIN и END, но Im не совсем уверен, что с ним не так.

Примечание: Это не готовый продукт, так как есть больше, что будет после этого и многое другое, что ему предшествовало. Это всего лишь одна часть гораздо более крупного проекта, но части довольно независимы, и ничто в этом запросе не зависит от любой другой части, отличной от существования этой таблицы [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

ответ

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 (я все еще изучаю). Я собирался поместить много вещей между ними, но я, возможно, не смогу. –