![]() |
||
Tips | /Home /Tips 一覧 |
動的SQLルールは通常のビジネスルールと同じ手順で作成していきます。
通常のビジネスルールの作成と違う点は下記の通りです。
下記ソースが簡単な動的SQLルールのソースとなります。
package jp.ne.mki.wedge.rule.sample; import jp.ne.mki.wedge.rule.AbstractDcBusinessRule; import jp.ne.mki.wedge.run.interfaces.DataInterface; public class SetDynamicSQL extends AbstractDcBusinessRule{ DataInterface in = null; public int getIOParameter(){ in = getInRecord(0); if(in == null){ return ERROR; } return OK; } public int execute(){ String sql = "SELECT PCODE, PNAME, SCODE FROM GOODS"; // inに設定されたデータが空でなければ、WHERE句を設定する。 String mCode = in.getValue(); if(mCode != null && mCode.length() != 0){ sql = sql + " WHERE " + mCode; } // SQLの設定 setRuleSQL(sql); return OK; } public void exit(){ in = null; } } |
リポジトリでの定義は3つの手順をおう必要があります。
先に作成した動的SQLルールを登録します。
登録方法は通常のビジネスルールと同様になります。詳細はOMCの使用方法を参照して下さい。
DMCにて動的SQLを実行するためのDCを作成します。
DMC:DC(SQL) タブ にて適当なTABLEにて『新規作成』アイコンを選択しします。
入力方法 は 「定義入力」 でも 「フリー入力」 でもどちらでも構いません。
DC基本クラスの選択ダイアログをクリックすると、
まずは、SAMC:ビジネスルール タブにて、作成した動的SQLビジネスルール を追加して下さい。
このルールのInRecordOutRecordには、ビジネスルール内で、getInRecord()、getOutRecord()で取得するものとなります。
続いて SAMC:DC タブにて、動的SQL実行用DCを追加して下さい。
このDCの 受信データセット には、発行したSQLの結果が格納されます。
また、動的SQL作成の段階で、setRuleSQL( String )メソッド実行時に、
バインド変数を含むSQLを発行した際には、
バインド時に使用するレコードを、DCの 送信データセット に設定して下さい。
バインド変数を含むSQLとは、「SELECT PCODE, PNAME, SCODE FROM LCLASS = ?」等 ?を含む形のSQLを指します。
SAMC:DC タブと SAMC:ビジネスルール タブの追加が出来ましたら、続いてこのDCとビジネスルールを関連付けます。
DCタブの上のペインに、ビジネスルールという項目が存在します。
このセルをクリックすると、動的SQLとの関連付けダイアログが表示されますので、
2.3.1で追加したルールを選択して下さい。
2.3.2、2.3.3で設定されたDCをディシジョンテーブルの実行リストに設定することで、
動的SQLを実行することが出来ます。
(ビジネスルールのほうは実行リストに設定する必要はありません。)