SQLPlus:显示多行语句的完整SQL错误

时间:2013-02-14 14:53:42

标签: sql oracle sqlplus

我使用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一起显示?

2 个答案:

答案 0 :(得分: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之前已written about this,它也在this 11g top features article

答案 1 :(得分:-1)

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

当报告错误时,查询将在其上方。