如何在Mulesoft批量更新中处理null

时间:2019-03-12 15:52:25

标签: mulesoft

那里有许多类似的问题/答案,但是它们不包含示例有效负载,或者不适用于dataweave 2.0。

样本有效载荷

{
  "updateCaseOutput": [
    {
      "HENRY_RESPONSE": "error",
      "AUTO_INDEX": 472
    },
        {
      "HENRY_RESPONSE": null,
      "AUTO_INDEX": 473
    },
        {
      "AUTO_INDEX": 474
    }
  ]
}

我进行以下转换以仅包含数组。

%dw 2.0
output application/json
---
payload.updateCaseOutput map ( updateCaseOutput , indexOfUpdateCaseOutput ) -> {
    HENRY_RESPONSE: updateCaseOutput.HENRY_RESPONSE default 'updated',
    AUTO_INDEX: updateCaseOutput.AUTO_INDEX
}

在转换预览中显示了以下内容:

[
  {
    "HENRY_RESPONSE": "error",
    "AUTO_INDEX": 472
  },
  {
    "HENRY_RESPONSE": "updated",
    "AUTO_INDEX": 473
  },
  {
    "HENRY_RESPONSE": "updated",
    "AUTO_INDEX": 474
  }
]

到目前为止,太好了。下一个工具是记录器工具,它运行时,而不是获取空值的默认值,它显示为

"HENRY_RESPONSE": {}

这导致批量更新在列类型上失败:

********************************************************************************
Message               : Invalid column type.
Error type            : DB:QUERY_EXECUTION
Element               : UpdateHenry/processors/4 @ retro:retro.xml:79 (Bulk update)
Element XML           : <db:bulk-update doc:name="Bulk update" doc:id="e282a24a-d585-4a53-8f0f-eff2f99e5e32" config-ref="ClarifyDev">
<db:sql>UPDATE SA.RETRO_EMAILCLERK_STAGING_UPD
SET HENRY_RESPONSE=:HENRY_RESPONSE,DATE_TIME_PROCESSED=SYSDATE
WHERE AUTO_INDEX=:AUTO_INDEX</db:sql>
</db:bulk-update>

  (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)
********************************************************************************

有人可以告诉我我在这里想念的吗?这是批量更新:

        <db:bulk-update doc:name="Bulk update" doc:id="e282a24a-d585-4a53-8f0f-eff2f99e5e32" config-ref="ClarifyDev">
            <db:sql >UPDATE MyTableName
SET HENRY_RESPONSE=:HENRY_RESPONSE,
 DATE_TIME_PROCESSED=SYSDATE
WHERE AUTO_INDEX=:AUTO_INDEX</db:sql>
        </db:bulk-update>

非常感谢

0 个答案:

没有答案