Sqlplus Server 输出不显示

Sqlplus Serveroutput not showing

这是我的 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
@
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.

时缺少某些设置功能

有什么想法吗?

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

SQL> spool logfile.log

执行匿名块后,关闭假脱机

SQL> spool off

你永远不会真正执行你的 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 命令指定的同一文件并不是一个好主意。选择其中之一,而不是两者。