Сценарий T-SQL не может найти ярлык - PullRequest
0 голосов
/ 21 сентября 2018

Это мой сценарий T-SQL (отрывок - фактический сценарий массивный)

IF NOT EXISTS (SELECT * FROM tblDBVersion 
               WHERE tblDBVersion.Version = '1.10.0') 
BEGIN
    PRINT 'Database isnt at 1.10.0.  Upgrading.' 
    GOTO DBUpgrade1100
END

GOTO eof

DBUpgrade1100:
    -- TSQL Upgrade Script goes here --

eof:
    PRINT 'done'

Запуск этого приводит к этой ошибке:

Подключение к 10.96.68.30 какsa ...

Сообщение 133, уровень 15, состояние 1, строка 77
Инструкция GOTO ссылается на метку 'eof', но метка не была объявлена.
Во время выполнения возникла ошибка
Выход.
Отключение соединения от 10.96.68.30 как sa ...

Есть ли в области -- T-SQL Upgrade Script -- что-то, что может сорвать метку eof: отнашел, или я просто что-то напутал?

Спасибо всем

1 Ответ

0 голосов
/ 21 сентября 2018

Оказывается, вы не можете использовать GOTO в сценариях, которые используют GO.Так что это то, что я сделал вместо этого.

ЕСЛИ СУЩЕСТВУЕТ (ВЫБЕРИТЕ * ОТ dbo.tblDBVersion WHERE Version = '1.10.1') THROW 50000, 'остановка скрипта!', 1

скриптостанавливается, если инструкция SELECT возвращает какие-либо строки и не продолжается.Я не получаю свой условный скрипт, но для меня он достаточно близок и работает со сценариями, имеющими оператор GO.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...