Мне нужно вызвать набор операторов sql, включая фактический сценарий .sql, из powershell с помощью sqlplus. После этого мне нужно зафиксировать ошибку, не обязательно точный код выхода, но хотя бы тот факт, что произошла какая-то ошибка оракула. Это вызов в powershell:
$sqlQuery | &sqlplus $connectionString
Внутри $sqlQuery я установил это на ошибку при ошибке:
whenever sqlerror exit sql.sqlcode
Когда сценарий действительно сталкивается с какой-либо ошибкой, он правильно завершает работу и выходит из sqlplus:
INFO: ERROR:
INFO: ORA-01435: user does not exist
INFO:
INFO:
INFO: Disconnected from Oracle Database 11g Enterprise Edition Release
11.2.0.4.0 - 64bit Production
INFO: With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
INFO: Data Mining and Real Application Testing options
Однако после этой или любой другой ошибки Oracle, которую я получаю при выполнении скрипта, $LASTEXITCODE всегда равен 0, а $? всегда верно. Я не могу отправить вывод sqlplus в любой скрипт или переменную - я должен показать его на экране для приложения, в котором я запускаю powershell, поэтому у меня действительно нет возможности проверить вывод на " ОРА-" ошибки.
Итак, вопросы - почему $LASTEXITCODE и $? действуя так, как будто sqlplus завершился правильно, и есть ли какие-либо варианты для меня, чтобы получить правильный статус отказа в этом случае?