У нас есть следующий пакетный скрипт:
(
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