SQL * Plus: costringerlo a restituire un codice di errore
Domanda
Ho una procedura immagazzinata che ha un parametro OUT, che indica un codice di errore. Se il codice di errore non è 0, allora alzo un errore
DECLARE
BEGIN
foo (err_code);
IF (err_code <> 0) THEN
raise_application_error(...);
END;
Fin qui tutto bene, ma qui è la mia domanda.
Questo pezzo di codice (vedi sopra) viene eseguito da sqlplus, che viene chiamato da uno script di shell, che dovrebbe uscire con 0/0 non (come lo script SQL).
#shell script
sqlplus ... @myscript
return $?
Quando il raise_application_error esegue, il controllo torna a sqlplus.
sql>
Quello che voglio, è un modo di uscire di nuovo alla shell senza sqlplus restituire un 0 su $?
Qualche idea? Grazie in anticipo.
Soluzione
Altri suggerimenti
Se avete a cuore che il vostro errore di applicazione PL / SQL sollevato, è possibile dichiarare il codice di ritorno come SQL * Plus variabile, e restituire avere la procedura di PL / SQL impostarlo.
#shell script
sqlplus /nolog << EOF
connect uid/pw
variable retval number;
BEGIN
foo (:retval);
END;
/
exit retval;
EOF
return $?