2016-08-09 10 views
0

投稿はecho exit | sqlplus @script.sqlをパイプするように提案されましたが、スクリプトにはPL/SQL文が含まれているため、PROMPTメッセージが出力されるとすぐにexitが起動し、スクリプトが終了します。SQLPlusのスクリプトの後に終了しますか?

は、ここでLinuxのコール

alias sql 'sqlplus -s user/pass' 

sql @test.sql 

スクリプトが細かい実行し、DB内INSERTを行いだが、それはちょうどそれが実行したら、私はexitを入力するのを待ちます。 アイデア

+0

スクリプトを変更できませんか? –

答えて

1

あなたのスクリプトを最後にexitに変更することです。スクリプトが二回実行しているかのように、ファイル名に$$は、現在のプロセスのID(PID)で置換されている

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

:あなたはそれをしない一時ファイル、例えばを作成できることを行うことができない場合同時にそれぞれは異なるファイル名を取得します。最後に削除されます。 (保護の削除を最初に行うこともできますし、以前の削除がどうにか失敗した場合に備えて、それが存在しないことを確認することもできます)。

+0

スクリプト終了時に 'exit'を実行しましたが、pl/sqlはそれを認識しませんでした – Stefan

+0

終了は、PL/SQL(またはプレーンSQL)文の後でスクリプトの最後でなければなりません。あなたのスクリプトがPL/SQLブロックで終わり、 '/'で終了すると、その行は*新しい行に*後になります。 –

関連する問題