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.
(外だしSQL)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ごとの取扱いを必ずご確認下さい。