2

Oracle に大きな多次元オブジェクトがあり、Java に対応するクラスがあります。オブジェクトをストアド プロシージャに渡したいのですが、それを行う方法をいくつか見つけましたが、それらにはすべて、オブジェクトを配列にフラット化するステップが含まれています。これは、巨人を渡すようなものです。パラメータの順序付きリスト。エラーが発生しにくい方法でそれを行うことができれば、それは素晴らしいことです。名前付きフィールドのマップの使用など。

これまでに見つけた方法は次のとおりです。

  1. パラメータを含む Object[] を取るコンストラクタを使用して、oracle STRUCT を作成します。

    STRUCT oracleRecord = new STRUCT(recDescriptor, conn, recordFields);

  2. ORAData または SQLData インタフェースを使用し、コールバック メソッドでデータを平坦化します。

Map を受け取る 2 番目の STRUCT コンストラクターがありますが、ドキュメントが見つからず、機能していません。

「できません」という回答でも構いませんのでよろしくお願いします。:-)

Java オブジェクト (およびそれに対応する Oracle オブジェクト) は次のようになりますが、はるかに大きくなります。

User user = new User();
user.setActive(true);
user.setStatus(5);

ContactInfo contact = new ContactInfo();
contact.setFirstName("Bigs");
contact.setLastName("Guys");
contact.setEmailAddress(new EmailAddress("big.guy@gmail.com"));
user.setContactInfo(contact);

コメントへの回答で編集します。これは、ストアドプロシージャの署名がどのように見えるかの例です

procedure test_proc (obj_in IN user);
4

0 に答える 0