2016-08-09 5 views
0

Ich habe überall gesucht, und die Beiträge schlagen vor, die echo exit | sqlplus @script.sql zu verpuffen, aber mein Skript enthält PL/SQL-Anweisungen, die Eingang nehmen, so dass die PROMPT Nachricht ausgegeben wird, tritt die und das Skript beendet.Beenden nach Skript in SQLPlus?

Hier ist der Linux-Aufruf

alias sql 'sqlplus -s user/pass' 

sql @test.sql 

Das Skript führt in Ordnung und macht die INSERT in der DB, aber dann wartet er nur für mich, den Ausgang zu geben, wenn sie ausgeführt wird. Irgendwelche Ideen?

+0

Können Sie das Skript nicht ändern? –

Antwort

1

Die offensichtliche Sache zu tun ist, Ihr Skript zu ändern, um 10 am Ende zu haben. Wenn Sie nicht tun können, dass Sie eine temporäre Datei erstellen können, die es funktioniert, zB:

(cat test.sql && echo exit) > /tmp/test_$$.sql 
sql @/tmp/test_$$.sql 
rm -f /tmp/test_$$.sql 

Die $$ im Dateinamen mit dem aktuellen Prozess der ID (PID) ersetzt, so dass, wenn das Skript zweimal ausführen gleichzeitig erhält jeder einen anderen Dateinamen; und dann wird es am Ende entfernt. (Sie können zuerst ein schützendes Löschen durchführen oder überprüfen, ob es bereits existiert, nur für den Fall, dass eine frühere Entfernung irgendwie fehlgeschlagen ist).

+0

Ich hatte 'exit' am Ende des Skripts, aber das pl/sql erkannte es nicht – Stefan

+0

Der Exit muss direkt am Ende des Skripts sein, nach allen PL/SQL (oder Plain SQL) Anweisungen. Wenn Ihr Skript mit einem PL/SQL-Block endet und dessen '/ 'endet, dann geht der Exit * nach * in einer neuen Zeile. –

Verwandte Themen