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 命令指定的同一文件并不是一个好主意。选择其中之一,而不是两者。
这是我的 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 命令指定的同一文件并不是一个好主意。选择其中之一,而不是两者。