2016-12-29 8 views
0

Если есть ошибка во время выполнения процедуры, то эхо «ошибки» еще «успех»Как использовать IF заявление в Sqlcmd

sqlcmd -S DANAA-LAPTOP -d NewsWebsite -q "SP_DictionaryMain 'NewsWebsite','NEW'" 
     -o C:\logFile\ReportExE-%date:~-4,4%%date:~-10,2%%date:~-7,2%.txt 
+1

Напишите сценарий с инструкциями и передайте его в 'sqlcmd' вместо того, чтобы пытаться заполнить все в параметре запроса –

ответ

0

Try CMD && и || операторы, где && означает предыдущую команду успешным и || означает, что предыдущая команда не удалась.

как в

mycommand && echo success || echo error 

вы также можете написать составные команды внутри скобок

mycommand && (set "somevar=ok" & echo success) || (set "somevar=ko" & echo error) 

или, если вы работаете пакетный скрипт

mycommand && (
    set "somevar=ok" 
    echo success 
) || (
    set "somevar=ko" 
    echo error 
) 

Кроме того, вам нужно использовать переключатель -b, чтобы заставить sqlcmd возвращает ERRORLEVEL, которые могут быть записаны в пакетной или командной строке. Этот переключатель также заставляет sqlcmd закрываться при возникновении ошибки.

так, в вашем случае

sqlcmd -b -S DANAA-LAPTOP -d NewsWebsite -q "SP_DictionaryMain 'NewsWebsite','NEW'" -o C:\logFile\ReportExE-%date:~-4,4%%date:~-10,2%%date:~-7,2%.txt 2>NUL && echo success || echo error 

Как вы хотите echo что-то, вывод ошибок подавляется с 2>NUL. Удалите его, чтобы увидеть сообщения об ошибках от sqlcmd