Magic SQL式

遅延トランザクションにSQL Where句を使用するためには、通常[Magic SQL式]で定義します。

この範囲は、1つの点を除き、既存のDB SQL Where句と変わりません。異なる点は、この範囲の定義にMagic uniPaaSの式のサブセットが使用されるという点です(既存のDB SQL Where句にはフリー形式のテキストが使用されます)。構文は、Magic uniPaaSのものと同じですが、実行時にSQL Where句のコマンドに変換されます。MagicエンジンでSQLに変換できる式だけを含めることができます。

例えば、次の場合を想定します。

AはEmployee.BirthDateというDB名の実カラムだとします。ここで[Magic SQL式]をA = Date()と記述すると、[Where句の全体表示]領域には次のように表示されます。

Employee.BirthDate = Date()

(テーブル名はリンク結合が発生した場合のみ追加されます)

ここでは、DB専用の関数ではなく、Magic uniPaaSのDate関数が使用されていることに注意してください。

この関数は、Oracleデータベースの場合、実行モードで次のように変換されます。

TO_Date(Employee.BirthDate, 'DD-MON-YY') = TO_DATE(SYSDATE, 'DD-MON-YY')

MS-SQL Serverの場合は、次のように変換されます。

CAST(CONVERT(CHAR, Employee.BirthDate,112) AS DATETIME) =CAST(CONVERT(CHAR, GETDATE(),112) AS DATETIME)

2つの異なるDBに対し、同じタスクが式のプログラムを変更せずに実行されています。このように、Magic uniPaaSでは、データベースごとに、[Magic SQL式]が適切なSQLのWHERE句に変換されます。

既知の制限

Magic SQL式を使用する場合、以下の制限が適用されます。

Magic uniPaaSは、式の中で使用されるカラムは、デフォルトのマッピングを使用してデータベースのカラムにマッピングされることを想定しています。このため、式で使用されるどのような値でも、決まったデータ型を使用して送られます。例えば、以下の式を使用した場合:

B>='03:03:03'TIME

Maguc uniPaaSは、時刻のBは、データベースでChar(6)にマッピングされているものとします。従ってこの式は、Where句の一部として‘030303’として‘03:03:03’TIMEを送ります。

関連トピック: