sqlplus неправильно завершил скрипт - PullRequest
0 голосов
/ 15 мая 2018

у меня есть сценарий plsql, который не завершен должным образом:

create or replace package mypackage 
  ... (no semicolon/forward slash at the end)

сценарий выполняется с помощью sqlplus (12.1) на Windows PowerShell:

sqlplus user/pass@host @my_not_properly_ended_file.pks

я ожидал бы sqlplusзавершиться с кодом выхода 1 и сообщением об ошибке, но вместо этого он запрашивает ввод.

как я могу получить сообщение об ошибке и код выхода в этой ситуации?

edit: решение также должно работатьс операторами dml, которые не заканчиваются точкой с запятой.

1 Ответ

0 голосов
/ 15 мая 2018

Вы можете использовать перенаправление оболочки вместо @:

sqlplus user/pass@host < my_not_properly_ended_file.pks

Это также предотвратит застревание, если сценарий не заканчивается командой exit.

Однако в любом случае он не вернет код ошибки в оболочку. Что касается SQL * Plus, вы помещаете незавершенный оператор в его буфер, но никогда не пытаетесь его выполнить (так как не было косой черты); и поскольку это не бежало, это не ошибка. Так что установка whenever sqlerror или что-либо еще не будет иметь никакого значения.

...