Sql*plus gibt immer exit-code 0?
Immer, wenn ich ein sql-Skript mithilfe von Sql*plus und überprüfen Sie die $?, Ich bekomme 0, auch wenn das Skript nicht erfolgreich war.
Beispiel
#$ sqlplus user/password@instance @script.sql
SQL*Plus: Release 10.2.0.1.0 - Production on Wed Aug 7 14:20:44 2013
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle9i Enterprise Edition Release 9.2.0.8.0 - 64bit Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.8.0 - Production
v$dataf-ile d,
*
ERROR at line 6:
ORA-00933: SQL command not properly ended
Disconnected from Oracle9i Enterprise Edition Release 9.2.0.8.0 - 64bit Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.8.0 - Production
$ echo $?
0
$
Ich würde es gerne zurückgeben einen Wert ungleich null, wenn ein Fehler Auftritt.
Wie kann ich das erreichen ?
InformationsquelleAutor der Frage Tulains Córdova | 2013-08-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie explizit sagen
sqlplus
zu tun, dass in Ihrem Skript. Grundsätzlich gibt es zwei Aussagen, die Sie verwenden können:WHENEVER SQLERROR EXIT SQL.SQLCODE
WHENEVER OSERROR EXIT
Beispiel:
Und für OS-Fehler:
Weitere Informationen finden Sie unter diese und dass.
Hoffe, es hilft. Viel Glück!
InformationsquelleAutor der Antwort
Vlad ist die Antwort, die ich benutzen würde. Zu vermehren sein, aber ich versuchen, eine explizite EXIT-Anweisung wenn ich wirklich brauchen, return status. Zum Beispiel
InformationsquelleAutor der Antwort Andrew Wolfe
Die besten action könnte eine Kombination der anderen Ideen auf dieser Seite und den Ideen, auf
Helfen Sie bitte mit SQLPLUS? Wie man SQLPLUS Start mit dem DEFINIEREN der " OFF " - zunächst?
Machen eine Anmeldung.sql-Datei, oder Bearbeiten Sie die globalen ein, um
drin.
Dann, wenn die Datei nicht existiert, wird ein Fehler ausgegeben. Wenn eine Zeile fehlschlägt, wird ein Fehler ausgegeben.
Jedoch im Hinterkopf behalten, dass, wie die docs sagen : https://docs.oracle.com/cd/E11882_01/server.112/e16604/ch_twelve052.htm#SQPUG135
dass bestimmte Befehle immer noch nicht, Fehler heraus, als Sie vielleicht erwarten.
InformationsquelleAutor der Antwort Karl Henselin