2013-02-14 44 views
0

我用蟾蜍從數據庫中生成的insert語句看起來像這樣:的SQLPlus:顯示完整的SQL錯誤的多行聲明

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顯示?

+1

在SQL中指定字符串時使用單引號,而不是雙引號。 – 2013-02-14 14:54:51

回答

-1

在腳本中使用SET ECHO ON。 Sql * Plus會在終端上回顯它所播放的命令。

當它報告一個錯誤時,查詢會在它上面。

+0

我有一個調用其他腳本的「launcher.sql」腳本,我在我的launcher.sql腳本中添加了:「SET ECHO ON」和「set termout on」,它根本沒有改變顯示。 – Tristan 2013-02-14 15:11:16

+0

好的,這是最好的答案,但缺少一些東西:你必須啓動沒有「-s」標誌的sqlplus才能工作。 – Tristan 2013-02-25 16:29:53

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

湯姆凱特先前written about this,它也在this 11g top features article