2013-02-21 57 views
0

我已經編寫了一個小型bash腳本來從表中刪除一些行並使用sqlplus刪除一些用戶。當我將代碼放入函數時,它會給出「語法錯誤:文件意外結束」錯誤消息。以下是代碼。請讓我知道如何解決它。使用sqlplus編寫bash函數刪除用戶

function reset_db 
{ 
sqlplus user1/[email protected]${input} << eof 
set timing off 
set serveroutput on size 10000 
set feedback off 
spool logfile_$input.out 

delete from table1 where component = 'XYZ'; 
delete from table2 where component = 'XYZ'; 
commit; 
exit 
eof 

sqlplus dba_usr/[email protected]${input} << eof 
set timing off 
set serveroutput on size 10000 
set feedback off 
spool logfile_$input.out 

drop user ABC cascade; 
drop user DEF cascade; 
drop user HIG cascade; 
commit; 
exit; 
} 
+0

好像'$ input'應該是函數的參數。 – 2013-02-21 22:31:22

回答

0

你缺少eof在你的第二個sqlplus命令結束。順便說一句

exit; 
eof 
} 

,你實際上並不需要調用sqlplus兩個獨立的次;:更改此:

exit; 
} 

本你可以用它connect命令刪除一個連接,並打開一個新問題:

function reset_db 
{ 

sqlplus user1/[email protected]${input} << eof 

set timing off 
set serveroutput on size 10000 
set feedback off 
spool logfile_$input.out 

delete from table1 where component = 'XYZ'; 
delete from table2 where component = 'XYZ'; 
commit; 

connect dba_usr/[email protected]${input} 

drop user ABC cascade; 
drop user DEF cascade; 
drop user HIG cascade; 

eof 

} 
+0

非常感謝。這樣可行!但是我能夠在屏幕上看到我不想要的SQL反饋。我該如何解決這個問題? 另外我想更新我的腳本。我想將所有數據庫用戶存儲在一個列表中,然後將其全部刪除。我認爲我需要使用pl/sql進行此操作,這是個好地方,可能是:) – itsh 2013-02-21 22:44:26

+0

@ user2095793:不客氣! – ruakh 2013-02-21 22:46:02

+0

如何關閉屏幕上的SQL反饋? – itsh 2013-02-21 23:48:13