代码之家  ›  专栏  ›  技术社区  ›  Tristan

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

  •  0
  • Tristan  · 技术社区  · 12 年前

    我使用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 回复  |  直到 12 年前
        1
  •  0
  •   Alex Poole    12 年前

    不确定这是否正是您想要的,但使用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

        2
  •  -1
  •   Benoit    12 年前

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

    当它报告错误时,查询将位于其上方。