2017-03-06 48 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版本似乎解决了这个问题。