Sqlplus Serveroutput没有显示

时间:2016-01-25 20:43:40

标签: oracle plsql sqlplus spool

这是我的sqlplus脚本:

sqlplus <<EOF>> $LOGFILE $USER_NAME_PASSWORD
WHENEVER SQLERROR EXIT SQL.SQLCODE
spool $LOGFILE
set serveroutput on size 20000
show serveroutput
set echo on
set sqlblanklines off
set define off
@$1
spool off
exit
EOF
RC=$?

这是我的sql脚本:

DECLARE

L_COUNT NUMBER := 0;

BEGIN

   FOR i in 1..4 LOOP

      l_count := l_count + 1;

   END LOOP;

   dbms_output.put_line('Num: ' || l_count);

END;

我希望在我的$ LOGFILE中看到l_count的结果,但我没有。当我打电话给sqlplus时,我确定我错过了一些设置功能。<​​/ p>

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

你永远不会真正执行你的pl / sql匿名块。您需要在END之后加上'/';语句:

DECLARE
L_COUNT NUMBER := 0;
BEGIN
   FOR i in 1..4 LOOP
      l_count := l_count + 1;
   END LOOP;
   dbms_output.put_line('Num: ' || l_count);
END;
/

此外,使用shell stdout重定向来写入SPOOL命令指定的同一文件并不是一个好主意。选择一个或另一个,而不是两者。

答案 1 :(得分:0)

如果要将任何内容记录到任何日志文件中,例如logfile.log,使用

SQL> spool logfile.log

执行匿名阻止后,关闭假脱机

SQL> spool off