SQL * Plus: заставить его вернуть код ошибки - PullRequest
2 голосов
/ 12 февраля 2010

У меня есть хранимая процедура с параметром OUT, указывающим код ошибки. Если код ошибки не равен 0, я выдаю ошибку

DECLARE
BEGIN
 foo (err_code);

 IF (err_code <> 0) THEN
   raise_application_error(...);

END;

Пока все хорошо, но вот мой вопрос.

Этот фрагмент кода (показанный выше) выполняется sqlplus, который вызывается из сценария оболочки, который должен завершиться с 0 / не 0 (как сценарий sql).

* +1007 *

Когда выполняется Raire_application_error, управление возвращается к sqlplus.

sql>

То, что я хочу, это способ возврата обратно в оболочку, без sqlplus, возвращающего 0 на $?

Есть мысли? Заранее спасибо.

Ответы [ 2 ]

7 голосов
/ 12 февраля 2010
0 голосов
/ 14 февраля 2010

Если вас волнует, какую ошибку приложения вызвала ваша PL / SQL, вы можете объявить код возврата как переменную SQL * Plus, и для возврата будет установлена ​​процедура PL / SQL.

#shell script

sqlplus /nolog << EOF
connect uid/pw
variable retval number;
BEGIN
  foo (:retval);
END;
/

exit retval;
EOF

return $?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...