1

JDBCを使用したJavaプログラムの一部として、いくつかのことを行う複雑なストアドプロシージャをORacleで作成しています。

まず、カーソルに情報を読み込むために非常に複雑なSELECTを実行する必要があります。カーソルの各行は、請求書の明細を示します。出力カーソルには約10列あります。カーソルの各行について、すべてではありませんが一部のフィールドを別のテーブル(LineItemと呼ばれる)に挿入する必要があります。これに加えて、カーソル内のすべての行の合計を取得し、で親行を作成する必要があります。請求書テーブル。

カーソルをJavaアプリに読み戻し、その内容を繰り返して必要に応じてINSERTSを実行する方が簡単ですか、それとも同じストアドプロシージャ内でこれらすべてを実行することは可能ですか?複雑さを避けるために複数のストアドプロシージャを使用する必要があると思いますが、これを実行できるかどうか、すべてを1つのトランザクションの一部として残すことができるかどうかはわかりません。

非常に複雑なストアドプロシージャの作成を避けようとしていますが、恐ろしい解決策も望んでいません。

ありがとう

4

1 に答える 1

2

私たちも同様の状況(請求書とその広告申込情報の処理)があり、次のことを行います。

  1. 1000のバッチでラインアイテムを取得します(同時にアイテムが多すぎるJavaプログラムを圧倒しないようにするため)。
  2. ラインアイテムレコードの必要な列を使用して、レコードをLineItemテーブルに挿入します。
  3. ラインアイテムを示すこれらのレコードを反復処理しながら、ヘッダーレコードの詳細を推測します。
  4. すべてのラインアイテムをバッチで処理する最後に、ヘッダーレコードをデータベースに挿入します。

これにはJPA(休止状態あり)とSpringを使用し、上記のすべての手順を1つのトランザクションで実行します。

于 2012-10-28T04:21:12.880 に答える