我的有效载荷是这样的,这是一个ArrayList
payload :[[a3An00000009Ej6EAE, a3An00000009EjGEAU, a3An00000009EjBEAU], [45000.0, 50000.0, 12000.0]]我的输入数据中有多个数组。
我可以引用id值,就像#message.payload.id&将其放在insert语句中一样:
<db:parameterized-query><![CDATA[INSERT INTO HDR_TABLE (ID) VALUES (#[message.payload.id])]]</db:parameterized-query>如何在代码中引用两个单独的数组?
<db:bulk-execute config-ref="Oracle_Configuration" doc:name="Database"><![CDATA[插入xxtw.XXTW_OE_CONTRACT_LINE(CONTRACT_LINE_ID,‘#[有效载荷]’,‘#[有效载荷]’)
]]></db:bulk-execute>
<!-- <foreach doc:name="For Each" collection="#[flowVars.extendedPrice]">发布于 2017-04-07 02:31:04
为了将记录列表插入到数据库中的表中,我们可以在数据库连接器属性的Basic Settings中使用Bulk选项。通过启用此选项,我们不需要遍历列表/数组。
由于批量模式,操作需要Iterable/Iterator作为输入。我们必须确保有效载荷是一个列表。在这种情况下,如果预期的结果是id和lineID的所有值都插入到相同的表中,则为HDR_TABLE。然后,我们必须将它们合并为一个列表,并覆盖有效载荷。
<expression-component doc:name="Expression"><![CDATA[
payload.lineID.add(payload.id);
payload = payload.lineID;]]>
</expression-component>如果只需要将lineID插入到HDR_TABLE中,则直接设置有效负载。
<set-payload value="#[payload.lineID]" doc:name="Set Payload"/>最后修改查询:
<db:parameterized-query><![CDATA[INSERT INTO HDR_TABLE (ID) VALUES (#[payload])]]</db:parameterized-query>IMHO,编辑的问题与原来的略有不同。但是,为了插入没有循环的数组,我们仍然使用Bulk Mode选项(Operation= Insert,Query = Parameterized)。然后再执行一个额外的步骤,将有效载荷合并成一个连续n元组的列表。
[[a3An00000009Ej6EAE, a3An00000009EjGEAU, a3An00000009EjBEAU], [45000.0, 50000.0, 12000.0]]。它将被数据库连接器误解,甚至大容量模式被激活。数据库会认为只有两条记录。因为主数组由两个记录/数组组成。[[a3An00000009Ej6EAE, 45000.0], [a3An00000009EjGEAU, 50000.0], [a3An00000009EjBEAU, 12000.0]]#[dw('payload[0] zip payload[1]')]INSERT INTO tableName (col1, col2) VALUES(#[payload[0]], #[payload[1]])发布于 2017-04-07 02:31:03
可以将payload.lineID用分隔符分隔为',‘,这将产生一个数组。
从该数组中,您实际上可以使用Index获得值。
https://stackoverflow.com/questions/43267042
复制相似问题