2017-11-08 183 views
0

Java関数内で一部のDML操作を実行しようとしています。エラーを取得します。ORA-06519:アクティブな自律型トランザクションが検出され、ロールバックされる

まず、接続を開いてDMLを実行しています。 同じ関数で、私はDML操作のために同じテーブルを使用するプロシージャを呼び出しています。手続きの中にcommitステートメントがあります。

私はXA oracleデータソースを使用しているので、自動コミットがオンになっています。javaでコミットする必要はありません。

ORA-06519:アクティブな自律型トランザクションが検出され、ロールバックされています。私はエラーを与えるので、javaでコミットオプションを指定することができませんでした。

誰でも助けてくれますか?

+0

もう1つ私はIBM Websphereサーバーを使用しており、構成されたデータソースを使用しています。 WAS構成内で構成を設定する必要があるかどうか。私はjavaで単純なjdbcを使って同じコードを実行しようとしましたが、エラーはありません。 – Sarbe85

答えて

0

次のようにあなたの関数や手続きの開始時に使用pragma serially_reusable、:

手続きpr_dml_operationを作成または交換は

pragma serially_reusableです。
v_abc_1 number;
v_def_2 date;

...
... ...

エンド

を開始します。ところで

決してを使用するにはpricipally、保存されたプログラミングブロック内文をコミットします。外部からの発行。それ以外の場合は、dmlの操作の一部として、トランザクションの完全性が破損する可能性があります。

+0

もう1つはIBM Websphere Serverを使用しており、構成済みのデータソースを使用しています。 WAS構成内で構成を設定する必要があるかどうか。私はjavaで単純なjdbcを使って同じコードを実行しようとしましたが、エラーはありません。 – Sarbe85

+0

@ Sarbe85 ok、nice。私はIBM Websphereについて知らない。 –

+0

混乱して申し訳ありません。私はプラグマの変更をせずにJDBC接続を使用して自分のコードを実行し、それは走った。これは、WASデータ・ソースを使用しているときは実行されていません。今、私は前述のように変更を実装しようとしていますが、プラグマSERIALLY_REUSABLEはパッケージ指定で宣言しなければなりません – Sarbe85

関連する問題