在执行SQL语句时,可能由于一些环境原因导致错误的出现,而我们希望将这些错误进行修正以解决语句错误问题,这是我们调试SQL语句经常采用的方法。

✿ 问题的提出

我们在调试SQL语句后,如何将这些错误语句的信息记录到一个表中供事后查看呢?

✿ 实现技术

Oracle 11g/12c在SQL*Plus给出一个新功能,可实现将SQL错误信息记录到表中,即用SET ERRORLOG ON命令来设置。

✿ 实现步骤

先用SQL*Plus登录到Oracle实例,在SQL>提示下,使用SET ERRORLOG ON进行激活,如:

SQL> SET ERRORLOG ON
SQL> desc SPERRORLOG
 Name                                      Null?    Type
 ----------------------------------------- -------- ------------------------
----
 USERNAME                                           VARCHAR2(256)
 TIMESTAMP                                          TIMESTAMP(6)
 SCRIPT                                             VARCHAR2(1024)
 IDENTIFIER                                         VARCHAR2(256)
 MESSAGE                                            CLOB
 STATEMENT                                          CLOB

SQL> col username for a20
SQL> select username,timestamp,message from sperrorlog;

USERNAME
--------------------
TIMESTAMP
---------------------------------------------------------------------------
MESSAGE
----------------------------------------------------------------------------
SCOTT
03-3月 -09 08.49.59.000000 上午
ORA-00942: 表或视图不存在

✿ 说明

Oracle 11g/12c版本支持此功能,其他低版本的SQL*Plus登录到Oracle 11g系统仍然不能使用这些新功能。