2017-03-06 44 views
0

我有4個語句正在SQLPLus中運行並被假脫機爲文件。SQLPlus反饋返回創建的空行

脫機到這個文件我運行以下命令:

echo "whenever sqlerror exit sql.sqlcode ROLLBACK" > ${sql_tempfile} 
echo "set echo off" >> ${sql_tempfile} 
echo "set serveroutput on" >> ${sql_tempfile} 
echo "set feedback on" >> ${sql_tempfile} 
echo "set pagesize 0" >> ${sql_tempfile} 
echo "set heading off" >> ${sql_tempfile} 
echo "set linesize 80" >> ${sql_tempfile} 
echo "set autocommit off" >> ${sql_tempfile} 
echo "set exitcommit off" >> ${sql_tempfile} 
echo "set sqlprompt \"$DB_NAME SQL>\"" >> ${sql_tempfile} 
echo "set sqlnumber on" >> ${sql_tempfile} 
echo "set newpage 0" >> ${sql_tempfile} 
echo "set echo on" >> ${sql_tempfile} 
echo "spool $TMPDIR/$filewoextension.log" >> ${sql_tempfile} 
cat ${file} >> ${sql_tempfile} 
echo "\n" >> ${sql_tempfile} 
echo "spool off" >> ${sql_tempfile} 

sqlplus/<<-eoSQL 

@${sql_tempfile} 

在審查文件,我們可以看到,一些行有「100行更新。」或'100行合併',但在同一個文件中,有一些記錄顯示'創建行'。

我似乎無法找出爲什麼我對某些語句的反饋被返回爲空值。在這個假脫機文件後,我使用一個正則表達式來讀取它,之後出現問題,因爲沒有從單個語句返回的數字。

我試過在開發環境中執行相同的事情,但似乎沒有相同的問題。它只出現在我們的Live環境中,而我們的Oracle DBA無法識別問題。

任何幫助表示讚賞。

感謝,

+0

他們至少可以通過交互式運行腳本來確認行爲嗎?我看不出爲什麼它會產生你所看到的效果,但是'set feedback 1'比'on'更安全。 –

+0

對不起,William,我忘了提及我們已經將$ {sql_tempfile}傳遞給DBA,當他們在環境中運行文件時,他們會得到正確的結果。 –

+0

他們是從同一個目錄下的同一個帳戶運行同一個sqlplus可執行文件,還是隻運行同一個數據庫?我想知道'login.sql'或'glogin.sql'中是否會有一些不同的設置(儘管我想不出來是什麼),如果你只是從TOAD運行它,你不會拿起它,因此我的評論關於「設置反饋1」。 –

回答

0

原來這是LD_LIBRARY_PATH被設定爲10.2,而不是11.2中,是造成這種差異的一個配置文件。

編輯變量設置爲當前的oracle版本似乎解決了這個問題。