2013-11-01 162 views
1

我正嘗試使用ksh腳本連接到Oracle數據庫。當我從提示中直接運行它時,它可以工作。但是當我把它放在一個腳本(abc.sh)中時,它就會失敗。以下是我在腳本中編輯的內容(編輯爲使其更短):對在Unix提示符下工作的Oracle執行SQL查詢但不在shell腳本中執行SQL查詢

此處abc是用戶名,而abc $ 123是有權訪問數據庫DBNAME的用戶的密碼。

#!/usr/bin/ksh 

sqlplus -s /nolog <<EOF> output 
connect abc/[email protected]; 

set echo off 
set heading off 

select table_name from dba_tables; 
exit; 
EOF 

這個工作,如果直接輸入,但運行的./abc.sh,給人錯誤 -

ERROR ORA-01017: invalid username/password; logon denied 

我敢肯定,我失去了一些東西簡單,但不能想出解決辦法。謝謝你的幫助。

回答

2

你不能只寫這樣的代碼,並期望它被傳遞給相關的程序。您的SQL行正在由KSH而不是您的SQL服務器執行。相反,你需要做更多的事情:

echo "SQL CODE HERE" | sqlplus .... 
+1

非常感謝!我將其更改爲: sqlplus -s/nolog @ abc.sql 其中abc.sql具有連接和選擇查詢。現在工作很好。 – xcentaur

+0

感謝Velox。它也幫助了我。我在過去的1個小時裏一直在尋找這個。 –