データベース(RDB)に対するSQL問合せの結果をイベントストリームに結合できます。from句において、以下の構文で指定します。
構文:
sql:データベース名 [" SQL問合せ "] または
sql:データベース名 [' SQL問合せ ']
データベース名には、RDB参照定義において指定した「開発資産ID」を指定します。
SQL問合せは、二重引用符(")または引用符(')で囲んで、さらにその外側を角括弧“[”および“]”で囲んで指定します。
SQL問合せの中には代替パラメーターを含めることができます。代替パラメーターは ${式} の形式で記述し、文の実行時に式が評価されます。
注意
RDBの参照は、複合イベント処理機能の性能劣化につながる可能性があるため、必要最小限にしてください。
複合イベント処理言語から参照するテーブル名やテーブルの項目名などのRDB側の定義名には、日本語を使用できません。項目の値には日本語を使用できます。
引用符(')で囲んだSQL問合せの中で、引用符(')で囲んだ文字定数を記述する場合には、エスケープ表記(\')またはUnicode表記(\u0027)を使います。
例
RDB参照の使用例
複合イベント処理ルール(select文)の中でのRDB参照の使用例です。
@Name("PutRecommend")
@SoapListener("soap-001")
select tvevnt.gatewayId as gatewayId,
case when db.DRY_FUNC = '1' then 'USE_DRY_FUNC' else 'HANG_LAUNDRY_INSIDE' end as recommendId
from TVControlRain as tvevnt,
sql:app_db[ 'SELECT DRY_FUNC FROM PRODUCTFUNC_TBL WHERE HGW_ID=${tvevnt.gatewayId}' ] as db;
使用するRDB参照定義の開発資産IDは「app_db」を設定しています。
RDBのテーブル「PRODUCTFUNC_TBL」を参照しています。
RDBのテーブル参照の条件に、代替パラメーター「${tvevnt.gatewayId}」を指定しています。
参照結果には別名「db」をつけ、select文の中で利用しています。