0

Oracle Service BusDBAdapterを使用してRESTベースのサービスを作成しようとしています。クエリで渡されるパラメータは4つあり、そのうち2つだけが渡されます。例えば:

http://www.example.com/findPerson/personId3%birthDt3%ss3%lastname=

birthDtは常に渡されますが、他の3つのうち1つだけが渡されます。他のパラメータは空です。

私がデータベースルックアップを行うために必要なのは、birthDtと他の3つのうちの1つが渡されることだけです。

渡されたものに基づいて条件付き選択を行う方法はOSBにありますか?必要なものを返すSelectまたは「QueryByExample」または「Invokestoredprocedure」を実行しますか?

RESTサービス呼び出しへの応答で、XML形式でいくつかの要素を返す必要があります。

4

1 に答える 1

2

すべての入力パラメータを入力として持つストアドプロシージャをバックエンドに作成できます(そのうちの3つは「デフォルトnull」です)

プロシージャmy_procedure(varchar2のp_parm1のデフォルトはnullなど)を作成または置換します。

ストアドプロシージャでは、selectステートメントを作成するために入力されているパラメータを確認します。osbのxqueryで、REST呼び出しのどのパラメーターが入力されているかを確認して、これらをストアドプロシージャ呼び出しのオプションのパラメーターにマップする必要があります。

または、dbアダプタで「selectstatement」オプションを使用して、次のような構造を使用することもできます。

select * from my_table where kolom1 =:p_name or:p_name is null

これで、入力パラメータの値に基づいてクエリ全体を拡張できます

また、この場合、残りのパラメーターをselectステートメントパラメーターに「マップ」するosbにxqueryが必要です。最も簡単な方法は、クエリパラメータ文字列全体をxqueryに渡し、substring / substring-afterなどを使用して、さまざまなパラメータを値と一緒に取得し、これらの値をデータベースの入力xmlペイロードにマッピングすることです。アダプター呼び出し。

于 2012-11-06T06:50:19.040 に答える