Ich möchte ein Oracle-Skript über SQL Plus über eine Windows-Eingabeaufforderung ausführen. Das Skript enthält keinen "exit" -Befehl, aber ich möchte trotzdem, dass SQL Plus beendet wird und die Steuerung nach Abschluss des Skripts wieder an die Eingabeaufforderung zurückgegeben wird. Mein Ziel ist es, dies zu tun, ohne das Skript zu ändern. Ist das möglich?
114
Antworten:
Eine andere Möglichkeit besteht darin, diesen Befehl in der Batch-Datei zu verwenden:
quelle
Ich fand das die beste Lösung und es funktioniert in einem Terminal oder innerhalb eines Skripts:
quelle
Wenn Sie jetzt feststellen, dass Ihr Problem möglicherweise mit der SQL-Datei selbst zusammenhängt, müssen Sie feststellen, dass sqlplus zum Beenden aufgefordert werden muss. So mache ich das:
(Der Schrägstrich ist wichtig. Er weist sqlplus an, die darüber liegenden Statemets auszuführen.)
quelle
Der beste Weg, um Benutzerinformationen zu verbergen und zu beenden, ist:
exit
wird an die Ausgabe von sqlplus übergeben und muss beendet werden.-S
Unterdrückt alle Serverausgaben, außer SQL-Abfragen im Skript.quelle
Sie können dies auch in Ihrem Shell-Skript tun.
Möglicherweise müssen Sie dem ";" mit einem \.
quelle
Ja, es ist möglich - generieren Sie ein Wrapper-Skript, das SQLPlus entsprechend einrichtet, Ihr Skript (d. H.) Enthält
@YourTargetScript.sql
und dann einen Exit ausführt .Trotzdem empfehle ich diesen Ansatz überhaupt nicht - SQLPlus verfügt über sehr viele Fallstricke für die programmatische Verwendung. Beim Schreiben von Shell-Skripten in der Vergangenheit, die Oracle verwendeten, habe ich einen Python-Wrapper darum herum erstellt (der ein vernünftigeres Verhalten bei der Fehlerbehandlung, eine gesunde Trennung der Ausgabe zwischen stdout / stderr, native CSV-Ausgabeunterstützung und andere solche Extras hinzufügte), und das hat funktioniert viel besser.
quelle
So was:
Wenn Sie dies in eine Batch-Datei einfügen, fährt die Steuerung mit den darauf folgenden Anweisungen fort.
EDIT: Meine schlechte, versuchen Sie es erneut mit / nolog flag
quelle
Für diejenigen, die sich Sorgen über die Sicherheit machen, Ihr Kennwort in das Skript aufzunehmen, bietet AskTom einen Artikel über "extern identifiziert" an : http: //asktom.oracle.com/pls/apex/f? P = 100: 11: 0 :::: P11_QUESTION_ID: 142212348066
quelle
Fügen Sie in Ihrem SQL-Skript EXIT hinzu. Hier ist ein Beispiel für meine test.bat-Datei:
sqlplus user / pwd @ server @ test.SQL> myLOG.LOG
Meine test.sql-Datei hat Folgendes: select * from dual; Ausfahrt
quelle
Ausfahrt | SQLPLUS / @ @
Dies ist die richtige Lösung, ich habe versucht, es funktioniert
quelle