2

複雑な入力/出力パラメータを持つ複雑なプロシージャがOracleパッケージにあります。私は次のように私の手順の1つを示します:

 PROCEDURE Authorize(PO_ErrorCode         OUT NUMBER,
                     PO_ErrorText         OUT VARCHAR2,
                     PI_Count             IN NUMBER,
                     PI_Setting           IN Setting,
                     PI_InputData         IN InputData,
                     PO_PreData           OUT InputData);

そして、2つの構造SettingInputData次のように表示します。

CREATE OR REPLACE TYPE Setting as object( ProviderType  NUMBER
                                          SwitchCode    NUMBER)

CREATE OR REPLACE TYPE Input_Data Is Table Of MainInputData;

CREATE OR REPLACE TYPE MainInputData as object( itemId            NUMBER,
                                                itemValue         NVARCHAR2(150),
                                                itemEncyptd       NUMBER,
                                                itemEncryptKey    RAW(16));

上記の説明で、私はいくつかの構造を含みます:Type、、、および。ArrayArray of TypeArray of Primitive

私はこの関数をOracleドライバーと&jdbcなどの関連クラスで呼び出しますが、この目標のために多くの複雑なコードを生成しました。STRUCTARRAY

私の質問は:単純なコードでこのタスクを実行するためのユーティリティまたはフレームワークはありますか?jdbcユーティリティがあることは知っspringていますが、経験したことはありません。

4

2 に答える 2

2

スプリングユーティリティを使用できます。

とを使用しStoredProcedureて、コンストラクター内ですべての入力パラメーターと出力パラメーターおよびそれらの型を宣言できるクラスがあります。sqlOutParametersqlInParameter

あなたの場合、3つの入力パラメータがあります。これを渡すには、execute メソッドを3つの引数で上書きして、

super.execute(a,b,c)

このリンクは役に立ちます。

于 2012-10-21T12:14:28.603 に答える
1

必要なことを正確に実行する内部ユーティリティがあります。それは生成します:

  • に基づいており、特定の注釈Oracle Object Typeで拡張されたJPAエンティティ。eclipselink
  • PL/SQLパッケージを反映するJavaインタフェース。

ランタイムでは、eclipselinkはエンティティインスタンスをインスタンスに変換し、java.sql.Struct生成されたJavaインターフェイスの呼び出しは、PL/SQLプロシージャおよび関数を動的に呼び出すランタイムによってインターセプトされます。また、IN / OUTパラメータをサポートし、PL/SQLパッケージをWebサービスとして公開できます。これにより、階層的なOracleオブジェクトタイプが多数ある開発が容易になります。公開されていたらいいのにと思います。このツールに興味がある場合は、私に連絡してください。

この目的でOracleのjpublisherを使用することもできます。

于 2013-06-03T15:56:41.853 に答える