-1

Java から db2 ストアド プロシージャ (p1) を呼び出しています。

このプロシージャは、挿入後にトリガーを持つテーブルにいくつかの挿入を行います。トリガーが別のプロシージャ (p2) を呼び出し、例外 'SIGNAL SQLSTATE '50000' SET MESSAGE_TEXT = 'An error'; が発生します。

SQLException呼び出された db2 プロシージャは正常に実行されます。Java 呼び出し元を取得する必要はありません。しかし、私は Java コードで、プロシージャ p1 が発生させたかのように sqlexception を受け取ります。

db2 がこのように動作する理由と、それを防ぐ方法を教えてください。


後で編集

別のことが起こる可能性があります。

そのデータベースのdb内部キッチンで何かが壊れている可能性があるため、プロシージャdb2を呼び出すと、実際にプロシージャp2が実行されます。

残念ながら、問題が発生したシステムにアクセスできないため、何が起こったのかを尋ねることしかできません。

どのシナリオがよりもっともらしいと思いますか?

4

1 に答える 1

0

それがトリガーであり、2番目の手順が別のタスクとして実行されていることを確認しますか?

プロシージャコードは次のようなものだと思います。

procedure1()
begin
//do smth
result = procedure2();
//do smth else
end

そのため、例外が発生します。

于 2012-09-06T14:03:42.153 に答える