У нас есть следующий пакетный скрипт:
(
echo @release.sql
echo exit
) | sqlplus x/y@orcl
if %errorlevel% gtr 1 goto dberror
Проблема в том, что оператор if %errorlevel% gtr 1
никогда не отображается как истинный при возникновении ошибки SQL.
Если мы поместим мусорные команды в файл release.sql, sqlplus пожалуется:
SQL> SP2-0042: unknown command "blah" - rest of line ignored.
SQL> Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
Но %errorlevel%
по-прежнему равно 0. Как мы можем определить, что произошла ошибка sql?
Обновление : Этот код, похоже, работает для некоторых ошибок SQL. Это будет работать, если я сделаю drop table blah
, но не будет работать только с командой blah