24.4. 关于 SQL 语句中更新数据的参数占位符和值
流中中间的数据库连接,或者完成简单集成,可以执行更新数据的 SQL 语句。将数据库连接添加到集成时,您可以在 SQL 语句中指定要执行的占位符参数。在执行期间,当输入参数值位于集合中时,连接可以执行批处理更新。
在 SQL 语句中指定参数
当您创建或编辑集成并添加一个更新数据库的连接时,您可以在 SQL 语句中指定连接在运行时执行的占位符参数,或者可以在运行时执行保存过程中的占位符。例如:
INSERT INTO TODO(task, completed) VALUES(:#param_1, :#param_2)
DELETE FROM TODO WHERE task LIKE :#param_3
要指定这些占位符的值,请在数据库连接前添加数据映射步骤到流中。在 data 映射步骤中,将适当的源数据字段映射到目标数据字段,例如,将源数据映射到 :#param_1、:#param_2、和 :#param_3 target 字段。请参阅添加 数据映射程序步骤。
使用参数值集合进行批处理更新
在运行时,当数据库连接执行可插入、删除或更新数据的 SQL 语句时,执行的 SQL 语句通常会指定一个或多个占位符参数,例如 :#task。当连接时,到连接的输入可以是一组参数或一组参数集,其中每个元素会为对应的占位符参数定义值。
对数据库连接的输入来自流中的较早连接,如 HTTP 请求(Webhook),或发送到 API 供应商集成的 REST API 服务的请求。当输入是集合时,连接将使用批处理模式来更新表。例如,考虑这个 SQL 语句:
insert into todo (task) values (:#task)
如果输入集合包含 3 个值,则连接插入三个记录,每个值对应一个。现在,考虑使用带有两个占位符参数的 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}]
使用集合作为输入时,连接会针对每一组参数值执行一次插入操作。在本例中,连接会在表中添加两个记录,每个参数值对应一个。