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.

È stato utile?

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 $?
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top