oracle - 在 sqlplus 中执行时将 plsql 错误消息重定向到日志文件

标签 oracle logging plsql sqlplus ksh

需要一种在 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/

相关文章:

mysql - 查找列名 SQL

java - 如何为在 jboss 上运行并使用 ojdbc14.jar 的闭源应用程序启用 SQL 跟踪

oracle - 将记录数组转换为refcursor

oracle - 甲骨文蟾蜍 12.12 : What is the difference between Literal and Environment Variable?

java - 如何在 Tomcat 中禁用 java.util.logging?

oracle - PL/SQL 过程如何判断它是否是从并发程序运行的?

sql - 1Z0-007 考试题

解释计划分区上的 oracle 过滤器

java - 如何将 Spring DEBUG 日志重定向到单独的文件?

logging - Syslog-ng 仅转发原始日志