This is a cache of http://dbflute.seasar.org/ja/manual/function/ormapper/outsidesql/procedure/call.html. It is a snapshot of the page at 2024-11-13T00:30:22.096+0000.
(外だし<strong>s</strong>QL)call() | DBFlute

(外だしsQL)call()

call()

プロシージャを実行します。プロシージャ対応のParameterBean、ProcedurePmb を引数に取り、対応するプロシージャを実行します。OUTパラメータ(プロシージャリターンも含む)に対応しています。

会話上では、こーる もしくは ぷろしーじゃこーる と表現します。

実装方法

ProcedurePmbを自動生成

引数は一つだけで、sql2Entityで自動生成した ProcedurePmb を指定します(自動生成はオプション)。 このパラメータ一つで、どのプロシージャを呼び出すか、プロシージャへ渡すパラメータ、プロシージャから受け取る値、全てを表現します。

メソッドの呼び出し

outsidesql() の後、call() を呼び出します。

e.g. 外だしsQLの一件検索の実装手順 (Eclipseでコード補完) @Java
memberBhv.o // .o と打って enter
--
memberBhv.outsidesql().ca // .ca と打って enter
--
memberBhv.outsidesql().call(pmb);
// あらかじめ補完される引数の名前に合わせておくとスムーズに

厳密には、プロシージャはテーブルとは関連付いていないため、どの Behavior を利用しても呼び出せます。しかしながら、そのプロシージャの処理としてメインとなっているテーブルの Behavior を習慣的に利用することをお奨めします。

どのプロシージャを呼び出すか

ProcedurePmb が対応するプロシージャの名前を保持しているので、指定するだけでプロシージャを呼び出せます。

e.g. プロシージャの呼び出し {sP_FOO_PROCプロシージャ} @Java
spFooProcPmb pmb = new spFooProcPmb();
memberBhv.outsidesql().call(pmb);

プロシージャへ渡すパラメータ

INパラメータ、INOUTパラメータを、ProcedurePmb に設定します。

e.g. INパラメータの指定 {sP_FOO_PROCプロシージャ} @Java
spFooProcPmb pmb = new spFooProcPmb();
pmb.setBarParam(3); // INパラメータ
memberBhv.outsidesql().call(pmb);

プロシージャから受け取る値

OUTパラメータやプロシージャリターン値を受け取る場合は、呼び出し後に ProcedurePmb インスタンスからそれら値を受け取ります。

e.g. OUTパラメータの受け取り {sP_FOO_PROCプロシージャ} @Java
spFooProcPmb pmb = new spFooProcPmb();
memberBhv.outsidesql().call(pmb);
string donOutParam = pmb.getDonParam(); // OUTパラメータの受け取り
Integer ret = pmb.getReturnValue(); // プロシージャリターン値の受け取り

Resultset の受け取り

Resultset (結果セット)を受け取る場合も、同じく ProcedurePmb のプロパティとして受け取ります。

DBMsごとの取扱い

DBMsへの依存が強い領域ですので、DBMsごとの取扱いを必ずご確認下さい。