メインソースの代わりに埋め込みSQLが定義されているタスクは、通常のMagicタスクと同じ機能を持ちます。ただし、以下のような制約事項があります。
SQLコマンドで使用されている全てのテーブルは、[SQLコマンド]ダイアログの[データベース]欄で宣言されているデータベースのものでなければなりません。異なるデータベースのテーブルを組み合わせることはできません。
オンラインタスクでは、SQL コマンドのビュー(結果テーブル)のカラムを更新することはできません。また、更新しても、その更新はディスクには書き込まれません。これは、結果テーブルはタスクが終了すると同時に削除されるためです。更新を行いたい時には、別のテーブルをリンクして使用してください。
レコードが親タスクの現在のビューである場合、そのレコードの状態を変更するようなコマンドは使用しないでください。
バッチタスクの場合、項目のグループレベルを更新しないでください。グループレベル処理では、一つ前のレコードの更新が必要になりますが、バッチタスクの場合、タスクのデータストリームは一方通行で停止することができず、ブレイクレベルの更新を行うことができません。
バッチSQLコマンドでは、タスクレベルのトランザクションを使用します。
埋め込みSQLでCOMMIT、ROLLBACK の各コマンドを使用した場合、それらがMagic xpaのトランザクション内で生成されないと、その結果は予測できません。COMMITとROLLBACKは、Magic xpaのタスクレベルテーブルで適切なトランザクションモードを選ぶことによってのみ正常に機能します。
SQL文はRDBMSによって実行されます。コマンドの構文を決めるのは開発者の責任であり、開発者はDBMS 固有の拡張機能を自由に利用できます。ただし、各種のSQL DBMS間でアプリケーションの可搬性が必要とされる場合は、DBMS 固有のSQL 拡張を埋め込みSQL に組み込まないように注意してください。これはMagic xpaが作成したSQL 文では問題となりません。Magicゲートウェイはデータベースごとに、正確で最適化された構文を生成します。
埋め込みSQLをオンラインタスクで使用すると、Magic xpaによって一時テーブルが作成されます。このテーブルは任意にデータベース内に作成できます。通常は、Magic xpaに各レコードの読み取りと書き込みを行わせるより、RDBMSのユーティリティを利用してその同じRDBMS内に一時テーブルを作成する方が効率が高くなります。
埋め込みSQLタスクの範囲指定は使用できません。
ストアドプロシジャを実行する時は、以下の形式で名前のすぐ前にexec を指定します。
exec sp_order_update |
APGで作成されたステートメントは、ゲートウェイにより実行されます。この場合、結果セットの形式も正しく解釈されます。また、データの取り出しだけでなく、データを変更するステートメントも作成できます。
ODBCは、埋め込みSQLの結果データベースとして利用できません。
MS-SQL Serverの場合、戻り値はSelectステートメントの結果でのみ設定可能です。出力パラメータでは指定できません。
ローカルデータベースは、埋め込みSQLのステートメントで使用できません。
埋め込みSQLは、オフラインタスクで使用できません。
埋め込みSQLを使用するとき、表示されるレコードに対する位置情報がないため、[再位置付けモード]を「0」に設定した[ビュー再表示]イベントは、最後にパークされたレコードに位置付けされません。