RDBGet - RDBからの入力

RDBMSへSELECT文を発行して結果セットをストリームとして出力します。

■ストリーム情報

入力フォーマットすべて
接続数無制限
説明 入力ストリームは使用せず、すべて無視します。
出力フォーマットRecord

■コンポーネントプロパティ

名前プロパティ型マッピング説明
コネクション名connection 接続先のRDBを指定します。 コネクションペインまたは管理コンソールにて作成されたRDB接続名を選択します。
SQL文string入力&出力 実際にRDBMSに対して発行されるSQLを指定します。
SQLビルダーによって自動作成したり、さらに編集したりすることができます。詳細については下記トピック「SQLビルダーの使い方」を参照してください。SQLビルダーを使わずに、前に連結したマッパーからSQL文の文字列をマッピングすることもできます。
フィルターを指定boolean 取得した結果セットに対して読込み開始行取出す件数でフィルタリングを行うかどうかを指定します。
はい [true] - 結果セットを読込み開始行取出す件数でフィルタリングします。
いいえ [false] - 結果セットのフィルタリングは行われません。
読込み開始行int入力&出力フィルターを指定が「はい」の場合に出力するレコードの開始行を指定します。
行のインデックスは1ベースのインデックスです。
読込み開始行が結果セットの件数よりも大きい場合はレコードが無いが発生します。(レコードが無い場合エラーが「いいえ」の場合は空の結果セットが出力されます。)
取出す件数int入力&出力フィルターを指定が「はい」の場合に出力するレコードの行数を指定します。
例えば読込み開始行=11、取出す件数=10の場合は入力レコードセットの11行目から10行が出力されます。
取出す件数に達する前に入力レコードが最終行に達した場合はそこまでのレコードが出力されます。
取出す件数が0の場合は、読込み開始行以降のすべての行が出力されます。
タイムアウト(秒)int入力&出力 RDBMSへSELECT文を発行してから結果が返ってくるまでの待ち時間を秒単位で指定します。
指定時間を経過しても実行が終わらない場合は汎用となります。
0の場合はタイムアウトすることはありません。
ループを開始loopProcess 結果セットをまとめて出力するかループ時に取出す件数での指定行数ずつループして出力するかを選択します。
はい [true] - ループの起点となって1レコードずつストリームに出力します。
いいえ [false] - すべてのレコードがまとめてストリームに出力します。
ループ時に取出す件数int入力&出力ループを開始はいの場合に一度の実行で出力する行数を指定します。
レコードが無い場合エラーboolean 結果セットのレコード件数が0件だった場合にエラーを発生するかどうかを選択します。
はい [true] - エラーを発生します。
いいえ [false] - 空のストリームを出力します。
SQLパラメータcategory入力&出力SQL文中にパラメータ書式を埋め込むことにより、SQLパラメータの値をパラメータまたは置換文字列として使用することができます。
SQLパラメータはSQLビルダーを使って定義します。詳細については下記トピック「SQLビルダーの使い方」を参照してください。

■ループ処理

ループを開始が「はい」の場合、このコンポーネントがループの起点となって結果セットのレコードを1レコードずつ出力します。

■トランザクション処理

コミットRDBMSをコミットします。
ロールバックRDBMSをロールバックします。

■エラー処理

タイプパラ
メータ
エラー処理フロー
へのストリーム
エラー
コード
説明
汎用 なし コンポーネントの入力ストリーム なし SQL文が不正な場合
なし コネクション名に指定したコネクションが見つからない場合
なし SQL文がタイムアウトした場合
接続エラー なし コンポーネントの入力ストリーム なし DBMSとの接続に失敗した場合
レコードが無い なし コンポーネントの入力ストリーム3レコードが無い場合エラーが「はい」の場合で、レコードが0件の場合
4レコードが無い場合エラーが「はい」の場合で、フィルターを指定を適用した結果出力レコードが0件になった場合

■制限事項

データベースにMicrosoft Accessを使用する場合、フローの開始コンポーネントの「トランザクション化」プロパティを「いいえ」、本コンポーネントのループを開始プロパティを「はい」にする組合せは利用できません。

■SELECT文中のカラムと出力ストリームのフィールドの関係

SQLビルダーを終了後、「フィールド定義を更新しますか?」メッセージダイアログボックスが表示されます。「はい」をクリックすると、SQLビルダーで選択したSELECT文中のカラムがストリームペインで出力ストリームとして定義されます。「いいえ」をクリックすると、ストリームペインには定義されません。

本コンポーネントの出力ストリームとしてレコードを取得するには、ストリームペインにフィールドを定義する必要がありますが、SQLビルダーで生成したSELECT文中の各カラムと出力ストリームのフィールドは順序によってマッピングされるため、カラム名とフィールド名は一致する必要はありません。

SELECTされたカラム数が出力ストリームで定義されたフィールド数と異なる場合や、カラムのデータ型が対応するフィールドのデータ型と異なる場合でも、順序によってマッピングされます。

■SQLビルダーの使い方

SQLビルダーは、SQL文を自動生成する専用ツールです。SQLビルダーを使うと、簡単な操作で以下のようなことができます。

●SQLビルダーを起動する

以下のいずれかの操作でSQLビルダーを起動します。

●SQLビルダーの画面

●読み込むテーブルを指定する

SQLビルダーを起動すると(1)にテーブルの一覧が表示されます。読み込むテーブルを指定するには、2つの方法があります。以下の方法で操作すると、(2)にテーブルのフィールド一覧が表示されます。

ドラッグ&ドロップ

(1)の一覧からテーブル名をクリックしてドラッグを開始し、(2)にドロップします。

メニューから

(2)の空いたスペースで右クリックして表示されるメニューから「テーブル名を指定して追加」をクリックします。表示されたダイアログでテーブル名を入力して「OK」をクリックします。

●RDBMSの詳細情報を表示する

(1)または(2)に表示したテーブルをクリックすると、(3)に詳細情報が表示されます。

●実際に読み込むフィールドを指定する(SELECT)

実際に読み込むフィールドを指定するには、2つの方法があります。以下の方法で操作すると、(5)にSQL文が表示されます。

(2)の画面から

フィールドリストでフィールド名の左にあるチェックボックスをオンにします。(4)の選択列タブに表示されます。指定したフィールドを取り消すには、チェックボックスをオフにします。(4)の選択列タブから削除されます。

(4)の画面から(選択列タブ)

フィールド名の空いたフィールドをクリックして表示されるプルダウンリストから読み込むフィールドを選択します。

●読み込む指定をしたフィールドを編集する

(4)でフィールドをクリックしてから、右クリックして表示されるメニューから「上に移動」「下に移動」「削除」を操作します。

●レコードの並び替え(ORDER BY)

レコードを昇順または降順にソートして読み込むには、以下の2つの方法があります。以下の方法で操作すると、(5)のSQL文に反映されます。

(2)の画面から

フィールドリストでフィールドをクリックし、右クリックして表示されるメニューから「ORDER BYに追加」をクリックします。(4)のソートタブで、指定したフィールド名のソート順プルダウンリストから「昇順」または「降順」を選択します。

(4)の画面から(ソートタブ)

フィールド名の空いたフィールドをクリックして表示されるプルダウンリストから並び替えのキーとなるフィールドを選択します。指定したフィールド名のソート順プルダウンリストから「昇順」または「降順」を選択します。

レコードの並び替えを取り消す

ソートタブのフィールドをクリックし、右クリックして表示されるメニューから「削除」をクリックします。

●テーブルの結合(リレーション)

SQLビルダーでは、リレーションを含んだSQL文を自動生成することができます。テーブル間でリレーションを設定するには、以下の手順で行います。

  1. (2)に、複数の対象テーブルを表示します。
  2. 対象テーブルのフィールド名をクリックしてドラッグを開始し、他の対象テーブルのフィールド名へリンクを連結します。
  3. 連結したリンクを右クリックして表示されるメニューの「リレーション種別」から種別をクリックします。

リレーションを削除するには、連結したリンクを右クリックして表示されるメニューから「リレーション削除」をクリックします。

●レコードの抽出(WHERE)

SQLビルダーでは、レコードの抽出条件を固定値と比較したりフローの中での動的な値と比較したりする設定を行うことができます。また、条件式を直接入力してSQL文に追加記述することができます。

固定値と比較する

  1. (2)のフィールドリストでフィールドをクリックし、右クリックして表示されるメニューから「条件の追加」をクリックします。
  2. 条件の編集ダイアログボックスで「固定値との比較」ラジオボタンをクリックします。
  3. 条件式をプルダウンリストから選択します。
  4. 固定値をテキストフィールドに入力します。
  5. 値を「'」で囲む場合は、「値を「'」で囲む」チェックボックスをオンにします。

(5)のSQL文に抽出条件が追加されます。(2)のフィールドリストに条件式が表示されます。

SQLパラメータを使って実行時の動的な値の抽出条件を指定する

SQLビルダーで、任意の名前のパラメータを定義し、抽出条件にするフィールド名に条件を追加する際にパラメータ名を指定することにより、パラメータをWHERE句をSQL文の中に組み込みます。本コンポーネントの前にマッパーを配置し、定義したパラメータにマッピングすることにより、実行時の動的な値を抽出条件にすることができます。

動的な値の抽出条件を指定するためには、以下の手順で行います。

  1. 最初に、(4)のパラメータタブで、任意の名前、データ型、初期値のパラメータを定義します。
  2. (2)のフィールドリストでフィールドをクリックし、右クリックして表示されるメニューから「条件の追加」をクリックします。
  3. 条件の編集ダイアログボックスで「パラメータとの比較」ラジオボタンをクリックします。
  4. 条件式をプルダウンリストから選択します。
  5. 定義したパラメータが表示されるプルダウンリストから選択します。
  6. 値を「'」で囲む場合は、「値を「'」で囲む」チェックボックスをオンにします。

RDBGetコンポーネントの前にマッパーを配置し、マッピングウィンドウの出力側にあるパラメータのフィールド名に値となるフィールドをマッピングします。

(5)のSQL文に抽出条件が追加されます。(2)のフィールドリストに条件式が表示されます。

任意の条件を指定する

任意の条件を指定するには、以下の2つの方法があります。以下の方法で操作すると、(5)のSQL文に抽出条件が追加されます。

条件の編集ダイアログボックスから

  1. (2)のフィールドリストでフィールドをクリックし、右クリックして表示されるメニューから「条件の追加」をクリックします。
  2. 条件の編集ダイアログボックスで「直接入力」ラジオボタンをクリックします。
  3. 条件式をテキストボックスに直接入力します。

(4)の画面から(条件タブ)

  1. 条件タブの「任意の条件を追加」をクリックします。
  2. 条件式をテキストボックスに直接入力します。

抽出条件を組み合わせる

いろいろな条件を組み合わせて抽出を行う場合、(4)の条件タブで論理演算子を指定することができます。条件フィールドの「関係」項目のプリダウンリストから「AND」または「OR」をクリックします。

抽出条件を編集する

指定した抽出条件を編集するには、条件タブのフィールドをダブルクリックします。または、フィールドをクリックし、右クリックして表示されるメニューから「条件の編集」をクリックします。

抽出条件を取り消す

条件タブのフィールドをクリックし、右クリックして表示されるメニューから「削除」をクリックします。

●SQLパラメータを使って実行時に動的なSQL文を生成する

SQLビルダーのSQLパラメータは、抽出条件(WHERE句)を設定する以外に、SQL文の中での任意の文字列を置き換えることができます。任意の名前のパラメータを定義し、(5)で直接パラメータを記述します。また、条件の編集ダイアログボックスで任意の条件を指定するときに記述することもできます。本コンポーネントの前にマッパーを配置し、定義したパラメータにマッピングすることにより、実行時に動的なSQL文にすることができます。

動的なSQL文を指定するためには、以下の手順で行います。

  1. (4)のパラメータタブで、任意の名前、初期値で、データ型はStringのパラメータを定義します。
  2. (5)で、置き換えたい文字列を使用する部分に「$パラメータのフィールド名$」のようにフィールド名を$で囲んで記述します。
  3. RDBGetコンポーネントの前にマッパーを配置します。
  4. マッピングウィンドウの出力側にあるSQLパラメータのフィールド名に置換文字列となるフィールドをマッピングします。

●パラメータを編集する

(4)でフィールドを右クリックして表示されるメニューから「上に移動」「下に移動」「挿入」「削除」を操作します。

●自動生成したSQL文を直接編集する

(1)~(4)の指定で自動生成したSQL文が(5)に表示されます。(5)を直接編集すると、そのSQL文をそのままRDBMSに発行します。直接編集する際には、自動生成したSQL文と同期すると元に戻るため注意が必要です。同期設定については次項の「自動生成するSQL文表示のオプション」を参照してください。

●SQL文をテスト実行する

実際にRDBMSにSQL文を発行してテスト実行するには、以下の手順で行います。

  1. (5)の画面下部右側にある「SELECTテスト」をクリックします。
  2. パラメータを定義している場合、パラメータの値を指定するダイアログボックスで「初期値」項目にテスト用の値を設定して「OK」をクリックします。

正常終了の場合、実行結果がダイアログボックスに結果セットが表示されます。異常終了の場合、エラーメッセージダイアログボックスに表示されます。

結果セットの表示数を変更する

(5)の画面下部右側にある「テスト結果の行数」フィールドの行数を変更してから「SELECTテスト」をクリックします。初期値は100です。

●自動生成するSQL文表示のオプション

(5)の表示については、画面下部右側でオプションを指定することができます。

(5)のSQL文の編集について

SQLビルダーを使って指定したフィールドの選択、条件などのことをモデルといいます。「SQLを常に同期する」チェックボックスがオンの場合、(1)~(4)のモデルと(5)のSQL文が同期して自動生成された状態です。自動生成したSQL文を(5)で直接編集することができます。この場合、モデルを操作すると直接編集したSQL文が同期しないように、自動的に「SQLを常に同期する」チェックボックスがオフになります。直接編集をリセットした場合や再度操作したモデルからSQL文を自動生成する場合、「モデルをSQLに適用する」をクリックします。

オプション

●注意事項

●例

SQL文の値が以下の場合

SELECT GROUP, NAME, KANA FROM EMPLOYEE WHERE GROUP = ?GROUP? ORDER BY $ORDER$

SQLパラメータが以下の場合

GROUP=Sales
ORDER=KANA

実際に発行されるSQL文は、以下のようになります。GROUPのパラメータには「Sales」、ORDERのパラメータには「KANA」という値が入ります。

SELECT GROUP, NAME, KANA FROM EMPLOYEE WHERE GROUP = Sales ORDER BY KANA