2014-08-13 6 views
0

У меня есть проблема с условным сценария SQL в SQL Server 2008.Условный оператор SQL неправильный синтаксис

Когда я бегу каждую команду, как отдельный все в порядке, и я успешно обновить мой DB

Но когда я разделил все в одна команда, которую я получаю ошибки:

Msg 102, Level 15, State 1, Line 3
Неправильный синтаксис около ';'.

Msg 207, Level 16, State 1, Line 1
Недопустимое имя столбца'AdvertTypeCode '.

Msg 102, Level 15, State 1, Line 2
Неверный синтаксис рядом с «концом».

Так что я пробовал без запятой ';'

И ошибка:

Msg 102, Level 15, State 1, Line 3
Неправильный синтаксис около ')'.

Msg 207, Level 16, State 1, Line 1
Недопустимое имя столбца'AdvertTypeCode '.

Msg 102, Level 15, State 1, Line 2
Неверный синтаксис рядом с «концом».

Мой сценарий:

IF COL_LENGTH('TechnicalDialogue', 'sAdvertTypeCode') IS NULL 
begin 
    ALTER TABLE TechnicalDialogue ADD sAdvertTypeCode varchar(40) ; 
    go 
    UPDATE TechnicalDialogue SET sAdvertTypeCode = 'advert.type.broadcast' ; 
    go 
    Select * FROM TechnicalDialogue; 
end 

Я не имею много опыта с SQL Server, так что я немного запутался.

+2

Удалите 'GO', я не думаю, что вы можете использовать его в блоке. –

+6

GO не является оператором SQL. Это [команда, используемая в клиенте для выполнения пакетов SQL] (http://stackoverflow.com/a/2668549/300836), поэтому вы не можете иметь ее в середине BEGIN/END. 'GO' отправит все с момента запуска сценария или последнего GO на сервер для выполнения, поэтому сервер видит' begin', но не 'end'. –

+0

Спасибо, что помог мне, я этого не заметил :) – Mazeryt

ответ

3

GO не является оператором SQL. Это command used in the client to execute batches of SQL, поэтому вы не можете получить его в середине BEGIN/END. GO отправит все с момента запуска сценария или последнего GO на сервер для выполнения, поэтому сервер видит начало, но не конец. - Matt Gibson 26 минут назад

Смежные вопросы