【问题标题】:Storing oracle error/query result in a table将 oracle 错误/查询结果存储在表中
【发布时间】:2016-01-25 14:45:55
【问题描述】:

有人知道这是否可能吗?

例子:

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 中)。

任何帮助、想法、解决方法,我们将不胜感激。谢谢大家!

【问题讨论】:

  • 通常人们只是 SPOOL 到一个文件,以便之后可以检查它是否有任何错误。
  • 嗯,这可能是解决我的“问题”的好方法。非常感谢!

标签: sql oracle oracle11g


【解决方案1】:

在 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 之类的东西来检测错误。

【讨论】:

  • 谢谢!我认为通过这两个答案,我可以设法找到解决问题的好方法:D。
猜你喜欢
  • 2021-11-09
  • 2012-06-12
  • 1970-01-01
  • 2020-03-27
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多