DBFlute: ストアドプロシージャ!

かなりいまさらですが、Java版での利用実績も出来たし、
C#版でもサポートされたということで、使い方説明します。

dfprop配下に「outsideSqlDefinitionMap.dfprop」を作成し、
以下のように定義を記述します。
map:{
    ; generateProcedureParameterBean = true
}
すると、Sql2Entityの時にメタ情報から
ストアドプロシージャのParameterBeanを生成します。

 クラス名:ストアドプロシージャ名
 プロパティ:プロシージャのパラメータ
 その他:パラメータの種別「IN,OUT,INOUT」

これを引数にoutsideSql().call();を実行すると、
そのストアドが実行されます。
OUTパラメータの場合は、ストアド内での変更値が
引数で渡されたParameterBean自体に反映されます。
MySQL】

create procedure SP_IN_OUT_PARAMETER(
      in v_in_varchar varchar(32)
    , out v_out_varchar varchar(32)
    , inout v_inout_varchar varchar(32)
)
begin
  set v_out_varchar = v_in_varchar;
  set v_inout_varchar = v_in_varchar;
end;
// ## Arrange ##
SpInOutParameterPmb pmb = new SpInOutParameterPmb();
pmb.setVInVarchar("aaa");
pmb.setVOutVarchar("bbb");
pmb.setVInoutVarchar("ccc");

// ## Act ##
vendorCheckBhv.outsideSql().call(pmb);

// ## Assert ##
log("in=" + pmb.getVInVarchar() + ", out=" + pmb.getVOutVarchar() + ", inout=" + pmb.getVInoutVarchar());
assertEquals(pmb.getVInVarchar(), pmb.getVOutVarchar());
assertEquals(pmb.getVInVarchar(), pmb.getVInoutVarchar());
ストアド自体が、かなりDBに依存した機能です。
利用する際は、必ずご利用のDBでの検証をお願いします。
Example実装は、それぞれのDB毎のExampleのテストケース
「VendorCheckTest」にて実装されています。必ずご覧下さい。

dbflute-oracle-example
dbflute-mysql-example
dbflute-postgresql-example
dbflute-db2-example
dbflute-sqlserver-example
dbflute-nbasic-example // CSharp版MySQL
dbflute-noracle-example // CSharp版Oracle

(H2ではストアドが無いため、dbflute-basic-exampleにはありません)