メイン コンテンツをスキップする

tMysqlSPでストアドプロシージャーを使って州ラベルを検索

以下のジョブでは、Mysqlの2つのカラムが含まれるテーブルで、奇数の州IDに一致する州ラベルを検索します。このオペレーションの実行にはストアドプロシージャーが使用されます。

  • この例で使用されるtRowGeneratortMysqlSPtLogRowコンポーネントをドラッグ&ドロップします。

  • [Row Main] (行メイン)リンクを使用してコンポーネントを接続します。

  • tRowGeneratorを使用して、奇数のID番号を生成します。コンポーネントをダブルクリックしてエディターを起動します。

  • [+]ボタンをクリックして、 生成するスキーマにカラムを追加します。

  • [Key] (キー)チェックボックスをオンにし、[Type] (タイプ)から[Int] (整数)を定義します。

  • [Length] (長さ)は最大2桁になります。

  • プリセットファンクションのsequenceを、ウィンドウの下のパラメーターをカスタマイズして使用します。

  • [step] (ステップ)[Value] (値)をこの例では1から2に変更します。それでも開始は1からになります。

  • [Number of generated rows] (生成する行数)を25に設定して、すべての奇数の州IDを生成します(全部で50州)。

  • [OK]をクリックして、設定を有効にします。

  • 次に、tMysqlSPコンポーネントを選択し、プロパティを定義します。

  • [Property type] (プロパティタイプ)フィールドを[Repository] (リポジトリー)に設定し、リストの該当するエントリーを選択します。接続の詳細が自動的に入力されます。

  • あるいは、接続情報を手動で設定します。

  • [Sync Column] (カラムの同期]をクリックして、先行のコンポーネントから生成されたスキーマを取得します。

  • 次に、[Edit Schema] (スキーマを編集) をクリックし、ID に加えて、出力する州ラベルを保持するためのカラムを1列追加します。

  • [SP Name] (SP名)フィールドに、データベースから呼び出すプロシージャーの名前を入力します。この例では、getstateになります。実行されるプロシージャーは以下のようになります:

    DROP PROCEDURE
    IF EXISTS `talend`.`getstate` $$
    CREATE DEFINER=`root`@`localhost` PROCEDURE `getstate`(IN pid INT, OUT
    pstate VARCHAR(50))
    BEGIN
    SELECT LabelState INTO pstate FROM us_states WHERE idState = pid;
    END $$
  • [Parameters] (パラメーター)エリアで、 プラスボタンをクリックして、テーブルに行を追加します。

  • [Column] (カラム)フィールドをIDに、[Type] (タイプ)フィールドをINに設定します。これは、入力パラメーターとしてプロシージャーに渡されます。

  • 2番目の行を追加し、[Column] (カラム)フィールドをStateに、[Type] (タイプ)フィールドをOutに設定します。これは、返される出力パラメーターです。

  • 最終的には、tLogRowコンポーネントのプロパティを設定するために使われます。

  • スキーマを先行コンポーネントと同期します。

  • [Print values in cells of a table] (テーブルのセルに値を表示)チェックボックスをオンにして結果を読みやすくします。

  • 次に、ジョブを保存して実行します。

プロシージャーで定義されているように奇数の州IDに対応する州ラベルが出力に表示されます。

情報メモ注:

データベーステーブルまたはDBクエリーから一連のレコードを分析し、単一のレコードを返す場合は、マザー/ドーターテーブルにデータを挿入するをご覧ください。

このページは役に立ちましたか?

このページまたはコンテンツにタイポ、ステップの省略、技術的エラーなどの問題が見つかった場合はお知らせください。