将oracle错误/查询结果存储在表中

时间:2016-01-25 14:45:55

标签: sql oracle oracle11g

有人知道这是否可行?

示例:

CREATE TABLE XPTO (
this_is_an_error_because_there_is_no_data_type
);

查询结果:

"**Error starting at line X in command:
blablabla
SQL ERROR: ORA-02263**"

是否可以将查询结果保存在表格中?

我正在制作一个带有CREATE表/程序的“安装”脚本,GRANT很简单,但我想知道是否可以在表中保存可能弹出的错误在安装我的表或其中的任何内容时(在我的安装文件 .sql 中)。

任何帮助,想法,解决方法/ s,将不胜感激。谢谢你们!

1 个答案:

答案 0 :(得分:0)

在SQL * Plus中,可以使用SQL*Plus error logging完成此操作。

启用错误记录:

SQL> set errorlogging on

运行脚本:

SQL> CREATE TABLE XPTO (
  2  this_is_an_error_because_there_is_no_data_type
  3  );
this_is_an_error_because_there_is_no_data_type
*
ERROR at line 2:
ORA-00972: identifier is too long

最后,所有错误都存储在表SPERRORLOG中。

SQL> select * from sperrorlog;

USERNAME
------------------------------------------------
TIMESTAMP
------------------------------------------------
SCRIPT
------------------------------------------------
IDENTIFIER
------------------------------------------------
MESSAGE
------------------------------------------------
STATEMENT
------------------------------------------------
JHELLER
25-JAN-16 01.43.13.000000 PM


ORA-00972: identifier is too long
CREATE TABLE XPTO (
this_is_an_error_because_there_is_no_data_type
)

正如Tony Andrews在评论中所说,SPOOL是最常用的方法。但那是因为很少有SQL * Plus脚本完全自动化。如果您的目标是实现真正的自动化,则需要SQL * Plus错误记录或whenever sqlerror exit failure来检测错误。