2016-08-09 82 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。如果你不能做到這一點,你可以創建一個臨時文件,這樣做,例如:

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

在文件名中的$$取代當前進程的ID(PID),所以如果腳本運行兩次同時每個都會得到不同的文件名;然後在最後刪除它。 (您可以首先進行保護性刪除,或者檢查它是否已經存在,以防以前的刪除以某種方式失敗)。

+0

腳本結尾處確實有'exit',但pl/sql無法識別它 – Stefan

+0

在任何PL/SQL(或純SQL)語句之後,出口需要在腳本末尾處正確。如果你的腳本以PL/SQL塊結尾,並且終止'/',那麼退出*在*之後,換行。 –