25.4. データを更新する SQL ステートメントのパラメータープレースホルダーおよび値
フローの途中にあるデータベースコネクションや、シンプルなインテグレーションを終了するデータベースコネクションは、データを更新する SQL ステートメントを実行できます。データベースコネクションをインテグレーションに追加するとき、実行する SQL ステートメントのプレースホルダーパラメーターを指定できます。実行中、入力パラメーターの値がコレクションにあるとコネクションはバッチ更新を実行できます。
SQL ステートメントでのパラメーターの指定
インテグレーションを作成または編集し、データベースを更新するコネクションを追加する場合、ランタイムにコネクションが実行する SQL ステートメントにプレースホルダーパラメーターを指定したり、ランタイムに実行されるストアドプロシージャーにプレースホルダーを含めることができます。以下に例を示します。
INSERT INTO TODO(task, completed) VALUES(:#param_1, :#param_2) DELETE FROM TODO WHERE task LIKE :#param_3
これらのプレースホルダーの値を指定するには、フローのデータベースコネクションの前にデータマッピングステップを追加します。データマッピングステップで、適切なソースデータフィールドをターゲットデータフィールドにマップします。たとえば、ソースデータを :#param_1
、:#param_2
、および :#param_3
ターゲットフィールドにマップします。データマッパーステップの追加 を参照してください。
パラメーター値のコレクションでのバッチ更新
ランタイムにデータベースコネクションがデータを挿入、削除、または更新する SQL ステートメントを実行すると、実行された SQL ステートメントは多くの場合で 1 つ以上のプレースホルダーパラメーター (例: :#task
) を指定します。この場合、パラメーターの単一セットまたはパラメーターセットのコレクションをコネクションの入力とすることができ、セットの各要素が対応するプレースホルダーパラメーターの値を定義します。
たとえば HTTP リクエスト (Webhook) や API プロバイダーインテグレーションの REST API サービスに送信されたリクエストなど、データベースコネクションへの入力はフローの前のコネクションから取得されます。入力がコレクションである場合、コネクションはバッチモードを使用してテーブルを更新します。たとえば、以下の SQL ステートメントについて考えてみましょう。
insert into todo (task) values (:#task)
入力コレクションに 3 つの値が含まれる場合、コネクションは値ごとに 1 つずつ、3 つのレコード挿入します。ここで、2 つのプレースホルダーパラメーターを持つ SQL ステートメントについて考えてみましょう。
insert into todo (task, completed) values (:#task, :#completed)
この SQL ステートメントを実行するコネクションへの入力で、データシェイプ仕様は単一の要素を指定できます。例を以下に示します。
{"task": "write some docs", "completed": 0}
代わりにコレクションを指定することもできます。例を以下に示します。
[{"task": "write doc", "completed": 1}, {"task": "publish doc", "completed": 0}]
コレクションを入力とする場合、コネクションはパラメーター値に各セットに対して 1 度挿入操作を実行します。この例では、コネクションはパラメーター値の各セットに 1 つずつ、2 つのレコードをテーブルに追加します。