遅延トランザクションにSQL Where句を使用するためには、通常[Magic SQL式]で定義します。
この範囲は、1つの点を除き、既存のDB SQLと変わりません。異なる点は、この範囲の定義にMagic xpaの式のサブセットが使用されるという点です(既存のDB SQL にはフリー形式のテキストが使用されます)。構文は、Magic xpaのものと同じですが、実行時にSQL Where句のコマンドに変換されます。MagicエンジンでSQLに変換できる式だけを含めることができます。
例
例えば、次の場合を想定します。
AはEmployee.BirthDateというDB名の実カラムだとします。ここで[Magic SQL式]をA = Date()と記述すると、[Where句の全体表示]領域には次のように表示されます。
Employee.BirthDate = Date() |
(テーブル名はリンク結合が発生した場合のみ追加されます)
ここでは、DB専用の関数ではなく、Magic xpaの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 xpaでは、データベースごとに、[Magic SQL式]が適切なSQLのWHERE句に変換されます。
既知の制限
Magic SQL式を使用する場合、以下の制限が適用されます。
Magic xpaは、式の中で使用されるカラムは、デフォルトのマッピングを使用してデータベースのカラムにマッピングされることを想定しています。このため、式で使用されるどのような値でも、決まったデータ型を使用して送られます。例えば、以下の式を使用した場合:
B>='03:03:03'TIME |
Maguc xpaは、時刻のBは、データベースでChar(6)にマッピングされているものとします。従ってこの式は、Where句の一部として030303として03:03:03TIMEを送ります。
関連トピック: