RDBGet - RDBからの入力

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

フローサービスでRDBのフィールドを扱うためには、フローサービスのデータ型に各RDBのフィールドの型を対応させる必要があります。各種RDBのフィールドとフローサービスのデータ型との対応については、フローサービスマニュアルの「RDBとのデータ型の相互変換」を参照してください。

■ストリーム情報

入力フォーマットすべて
接続数無制限
説明 入力ストリームは使用せず、すべて無視します。
出力フォーマット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] - 空のストリームを出力します。
トランザクションに含めるboolean- DBMSとの接続をトランザクションに含めるかどうかを選択します。
実行する処理が更新を伴わないものであり、フローがトランザクション化されていない場合は「いいえ」にした方がフロー全体の処理速度があがります。
通常、このコンポーネントで行われる処理はSELECTのみですので、このプロパティを「はい」にする必要はありません。
はい [true] - コンポーネントの処理をトランザクションに含めます。
いいえ [false] - コンポーネントの処理をトランザクションに含めません。
フェッチサイズint- JDBCのsetFetchSize()に設定する値を指定します。
デフォルト値は1000です。
MySQLを使用する場合はコネクションのURLに「useCursorFetch=true」のパラメーターを設定する必要があります。
SQLパラメーターを使用するboolean- $,? をSQL文で使用したいときにこのプロパティを「いいえ」にするとSQLパラメーター置換処理をせずコンポーネントを実行できます。 また、この場合はSQLパラメーターが設定されていても無視されるので注意してください。
はい [true] - SQL文のSQLパラメーター書式の文字を置換します。
いいえ [false] - SQL文のSQLパラメーター書式の文字を置換をしません。
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)でフィールドをクリックしてから、右クリックして表示されるメニューから「上に移動」「下に移動」「削除」を操作します。

●重複を抑制する(DISTINCT)

(2)の画面で右クリックして表示されるメニューから「重複の抑制(DISTINCT)」を実行すると自動生成されるSELECT文にDISTINCT句が付加されます。

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

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

(2)の画面から

フィールドリストでフィールドをクリックし、右クリックして表示されるメニューの「ソートに追加」から「昇順」または「降順」をクリックします。

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

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

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

フィールドリストでフィールドをクリックし、右クリックして表示されるメニューの「ソートに追加」から「(なし)」をクリックします。
またはソートタブのフィールドをクリックし、右クリックして表示されるメニューから「削除」をクリックします。

●集約関数の使用(GROUP BY)

フィールドに対して集約関数を適用する場合には、以下の2つの方法があります。以下の方法で操作すると、(5)のSQL文に反映されます。

(2)の画面から

フィールドリストでフィールドをクリックし、右クリックして表示されるメニューから「集約関数」を経由して適用する集約関数を選択します。

(4)の画面から(集約関数タブ)

フィールド名の空いたフィールドをクリックして表示されるプルダウンリストから集約関数を適用するフィールドを選択します。指定したフィールド名の集約関数プルダウンリストから適用する集約関数を選択します。

「COUNT(*)」を設定する場合は「2」の画面からのみ設定でき、集約関数タブ上では選択できません。

集約関数を取り消す

(2)の画面でフィールドを選択しての右クリックメニューから「集約関数」を経由して「なし」を選択します。
または集約関数タブのフィールドをクリックし、右クリックして表示されるメニューから「削除」をクリックします。

集約関数が設定されていてもそのフィールドがSELECT対象に含まれていない(フィールドがチェックされていない)場合はSELECT句にその項目は含まれません。
GROUP BY句にはSELECT対象のフィールドで集約関数が含まれていないフィールドが自動的に設定されます。

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

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. 定義したパラメーターが表示されるプルダウンリストから選択します。

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」をクリックします。

正常終了の場合、実行結果がダイアログボックスに結果セットが表示されます。異常終了の場合、エラーメッセージダイアログボックスに表示されます。
結果のBLOBフィールドからStringデータを取得できない場合は空文字列として表示されます。

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

(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