0

我有使用 Toad 从数据库生成的插入语句,如下所示:

Insert into TXT
   (ID, STR)
 Values
   (23, 'test');

当此语句之一出错时,SQLPlus 会说:

Insert into TXT
*
ERREUR à la ligne 1 :
(...)

对于所有错误行,它总是说“ligne 1”,所以我需要看到错误的整行:

Insert into TXT (ID, STR) Values (23, 'test');
*
ERREUR à la ligne 1 :
(...)

是否有参数或任何方法可以使用 SQLPlus 显示它?

4

2 回答 2

0

不确定这是否是您所追求的,但使用 11g SQL*Plus 客户端,您可以使用以下方式存储它们set errorlogging

SQL> set errorlog on truncate
SQL> insert into dual -- don't do this really of course
  2  values (1, 2);
insert into dual -- don't do this really of course
            *
ERROR at line 1:
ORA-00913: too many values


SQL> select statement, message from sperrorlog;

STATEMENT
--------------------------------------------------------------------------------
MESSAGE
--------------------------------------------------------------------------------
insert into dual -- don"t do this really of course
values (1, 2)
ORA-00913: too many values

只要您提交,您就可以在另一个会话中看到错误,例如在您的脚本退出之后。要求提交有点可惜;这似乎是自主交易的候选者,但我相信他们有他们的理由。如果您知道这样做的话,无论如何您都可以在同一个会话中查询它 - 如果您可以在错误时自动执行此操作,我想会很好。请注意,这也会捕获难以处理的 SQL*Plus 错误 (SP2-xxxxx)。

Tom Kyte 之前曾写过这方面的文章,并且它也在这篇 11g 顶级特性文章中

于 2013-02-14T15:43:40.597 回答
-1

SET ECHO ON在您的脚本中使用。Sql*Plus 将在终端上回显它播放的命令。

当它报告错误时,查询将在它上面。

于 2013-02-14T14:56:21.480 回答