需要一种在 sqlplus 中执行时将 PL/SQL 程序错误消息重定向到日志文件的方法。
假设 PL/SQL 程序名为 send_2012.sql
并且它有以下异常 block
EXCEPTION
WHEN NO_DATA_FOUND
THEN
var_err := 'Data not found. ';
WHEN OTHERS
THEN
var_err := 'Error in '
|| $$plsql_unit
|| ' | '
|| SQLERRM
|| ' | '
|| 'Details: '
|| DBMS_UTILITY.format_error_backtrace;
END;
要在 KornShell (ksh) 脚本中运行 PL/SQL 程序,我有:
sqlplus some_username/'some_password' @some_database \
@/some/directory/send_2012.sql \
$parameter1 $paramenter2
假设执行send_2012.sql
时出错,如何将错误信息从var_err重定向到/some/log/directory/log_send_2012.txt
?
非常感谢。
最佳答案
像这样设置你的脚本:
-- test.sql script run from sqlplus
set serveroutput on
set echo on
WHENEVER SQLERROR EXIT SQL.SQLCODE
spool on
spool test.log
declare
l_val date;
begin
select sysdate into l_val from dual where 1=0;
exception
when others then raise;
end;
/
spool off
从该目录登录到 sqlplus 并运行:
SQL>@test.sql
您会在日志文件 (test.log) 中找到异常。
关于oracle - 在 sqlplus 中执行时将 plsql 错误消息重定向到日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12058020/