埋め込みSQLのSELECT文の動作

データビューエディタ > 埋め込みSQL

結果データベースを持つ埋め込みSQL文の中には、Magic での動作が異なるものがいくつかあります。

埋め込みSQL文は常に、[タスク前]の前に実行されます。このため[タスク前]が実行される時点では、そのSQL文はすでに実行されていることになります。

オンラインタスクとバッチタスクの比較

オンラインタスクの場合は、以下のようになります。

バッチタスクの場合は、以下のようになります。

結果データベースと入力データベースが同じ場合

このオプションを選択すると、結果データベースを入力データベースと同じにすることができます。ほとんどの場合、基礎となるRDBMS では次の文を使用できます。

INSERT INTO table AS SELECT...

この文は1 回のコマンドで全データをテーブルにコピーしています。この方法はカーソルをオープンするよりも高速です。レコードは全てクライアントから取得され、結果テーブルに挿入されます。

このような場合、SQL ゲートウェイはデータベース内にテーブルを作成し、次の文を送信します。

INSERT INTO temp_table AS direct SELECT statement

その後、ユーザはこのテーブルをスクロールしてSELECT 文の実行速度を向上させることができます。この方法では一時ファイルから個々のレコードを取り出したりそこへ挿入したりする処理がないため、結果セットが大きい場合には特に有効です。

結果データベースと入力データベースが異なる場合

結果データベースが入力データベースと異なる場合は、一時テーブルが作成され、SELECT 文の結果のレコードが全てこの一時テーブルに格納されます。その後、タスクはこの一時テーブルをメインソースとしてスクロールできます。

推奨事項

参照

結果データベース