Ради полноты Matrox имеет довольно обширное и долгое присутствие на Linux.
Во-первых, необходимо получить SQL*Plus к ошибке, если ошибка SQL происходит. Можно сделать это путем добавления:
WHENEVER SQLERROR EXIT FAILURE
к Вашему сценарию SQL (вероятно, вершина). Можно также дать различные коды (маленькие неотрицательные целые числа; ненулевой = отказ) вместо слова FAILURE
.
Они возвратятся к Вашему сценарию оболочки в $?
. Таким образом, у Вас может затем быть свой сценарий оболочки, реагируют на него. В целом это выглядело бы примерно так:
sqlplus -s <<EOF
$v_fcp_login
set head off feed off serverout on size 1000000
WHENEVER SQLERROR EXIT FAILURE
exec XXIRIS_TEST_K.XXIRIS_TEST('$v_1',$v_2,$v_3,'$v_4',$v_5);
exit
EOF
if [ 0 -ne "$?" ]; then
echo "Stored proc blew up." >&2
exit 1
fi
Конечно, можно использовать различные коды выхода для указания на разные вещи (например, при вызове нескольких хранимых процедур Вы могли бы выйти 1 для первого аварийного завершения, выйти 2 для второго, и т.д.),