0

次のように、Toad を使用してデータベースから生成された挿入ステートメントがあります。

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

このステートメントの 1 つが間違っている場合、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 に答える