Primeiro, você precisa obter o SQL * Plus para eliminar erros se ocorrer um erro de SQL. Você pode fazer isso adicionando:
WHENEVER SQLERROR EXIT FAILURE
para o seu script SQL (provavelmente no topo). Você também pode fornecer códigos diferentes (inteiros não negativos pequenos; não-zero = falha) no lugar da palavra FAILURE
.
Estes voltarão ao seu script de shell em $?
. Então você pode ter seu script de shell reagir a ele. Ao todo, seria algo como isto:
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
Naturalmente, você pode usar códigos de saída diferentes para indicar coisas diferentes (por exemplo, se estivesse chamando vários procedimentos armazenados, você poderia sair de 1 para o primeiro explodir, sair de 2 para o segundo, etc.)