データベース照会

「データベース照会」アクションは SQL クエリをデータベースに送信し、結果全体をループします。エクスプレッションを使用して SQL を指定する必要があります。結果ループの個々のイテレーションで、結果セット内の現在の行の値を変数に割り当てることができます。

プロパティ

以下のプロパティを使用して「データベース照会」アクションを設定できます。

データベース

このアクションでクエリを送るデータベースを、Design Studio で利用できるデータベースのドロップダウン リストを使用して選択します。

SQL クエリ

このフィールドには有効な SQL クエリがエクスプレッションの形式で含まれている必要があります。このエクスプレッションの値が、選択したデータベースに送られます。[編集] ポップアップ ダイアログを使用して、SQL クエリをテストし、出力のサンプルを表示することができます。

変数マップ

結果列から変数へのマッピングを指定します。プラス符号をクリックして新しいマッピングを追加し、マイナス符号をクリックして既存のマッピングを除去します。マッピングは列名と変数名から構成されます。列名は SQL クエリによって返される列の名前と一致していなければならず、変数名は既存の変数のリストから選択されます。列のタイプは選択された変数のタイプと一致していなければならない点に注意してください。一致していないと、実行中にエラーが生成される可能性があります。つまり、テキスト列を整数変数に保存しようとすると、エラーが発生します。

ループ中に取得

このプロパティが有効になっていると、イテレーションごとにループによって結果行が必要とされる場合にのみデータベースから結果行が取得されます。実行については以下の注記を参照してください。

デザイン モードでの最初の行

Design Studio のデザイン モードでのみ使用されるこのプロパティは、(1 からカウントして) アクセス可能な最初のイテレーションまたは照会結果行の番号です。実行については以下の注記を参照してください。

デザイン モードで使用する行数

Design Studio のデザイン モードでのみ使用されるこのプロパティは、イテレーションが利用できる結果行の最大数を指定します。実行については以下の注記を参照してください。

注意:[ループ中に取得] が無効または有効のどちらに設定されているかに応じて、結果行の取得は 2 つの異なる方法で行われます。

  • 無効:最初のイテレーションが実行される前にすべての結果行が取得され、メモリに保存されます。したがって、データベース接続は可能な限り最短の時間だけ予約され、結果はループの一部であるいずれのステップ (例えばデータベース データ登録ステップ) の影響も受けません。一方、利用可能なメモリはエラーなしで処理できる結果行の数を制限します (リリース 8.3 まではこれが利用可能な唯一のオプションでした)。
  • 有効:ループのイテレーションの実行に結果行が必要とされるたびに、データベースから 1 度に 1 つずつ結果行が取得されます。したがって、ステップは非常に多数の結果行を処理できますが、ループのすべてのイテレーションが実行を終了するまで、データベース接続はオープン状態にとどまります。その影響で、ループの実行中に SQL クエリによって参照されるデータベース テーブルに変更を加えると、結果が影響を受ける可能性があります。ただし、特定の状況で実際に変化が目に見えるかどうかは、多くの要因が重なり合って決まります。

Design Studio のデバッグ モードでは、ループ中に取得を行うと、ブレークポイントで、またはシングルステッピング中に実行が停止している間、データベース接続はオープン状態にとどまります。アクティブでない接続に対するタイムアウトがデータベースで設定されている場合は、長い中断の後、ロボットの実行を再開すると、データベース エラーが発生することがあります。

Design Studio のデザイン モードでは、結果行が常にループの開始前に取得されるため、[ループ中に取得] が事実上、無効になります。このようになるのは、異なるイテレーション間でインタラクティブに切り替えを行えるようにするためです。この操作に使用されるメモリの量を制限するには、[デザイン モードでの最初の行] および [デザイン モードで使用する行数] を組み合わせて、読み込む結果行のサブセットを指定します。例えば、

  • デザイン モードでの最初の行 = 301
  • デザイン モードで使用する行数 = 100 の場合、

ループは結果行 301 から 400 を繰り返します (ただし、SQL クエリがそれだけ多くの行を返すことを条件とします)。