尝试将日期值从 mule 数据库连接器传递给 UDT 时出错

问题描述

我有一个需求,我需要从 Mule 流调用在 Oracle 上的存储过程中定义的 UDT 类型。为了实现这一点,我正在创建一个 JDBC 数组类型,如:

%dw 2.0
output application/java
---
{
  inParam: Db::createArray("Database_Config","ADDRESS_TAB",[ Db::createStruct("Database_Config","ADDRESS_TAB_TYPE",["TESt-Mule",**("2015-07-04T21:01:01") as DateTime**,"WB"])
    ])
}

oracle ADDRESS_TAB_TYPE 是

ADDRESS_TAB TABLE OF ADDRESS_TAB_TYPE
Name                Null? Type          
------------------- ----- ------------- 
IADDRESS_NAME             VARCHAR2(240)   
IINACTIVE_DATE            DATE          
ISTATE                    VARCHAR2(150) 

Oracle 端定义的日期类型为 DATE

调用流程后,出现以下错误

    ERROR 2021-03-18 23:14:06,971 [[MuleRuntime].uber.04: [playground].oracle-db-loc-testFlow.cpu_INTENSIVE @4d9589a8] [processor: ; event: 876ad840-8811-11eb-a282-a483e7749b4e] org.mule.runtime.core.internal.exception.OnErrorPropagateHandler: 
********************************************************************************
Message               : "org.mule.weave.v2.el.ExpressionFunctionCallException: Exception while executing createStruct("Database_Config","WB"])
        ]) cause: An error occurred when trying to create JDBC Structure. Fail to convert to internal representation: 2015-07-04T21:01:01Z 
Trace:
  at callFunction (UnkNown)
  at createStruct (line: -1,column: -1)
  at createArray (line: 5,column: 73)
  at main (line: 5,column: 12)

我正在尝试将此日期值传递给 oracle,感谢任何帮助。谢谢!

解决方法

我使用了这个转换: fun dateTimeFormat(inputDateTime) = inputDateTime as DateTime as String{format: "yyyy-MM-dd HH:mm:ss.SSS"}

它奏效了。 谢谢!

,

这里的建议对你有帮助吗?

https://help.mulesoft.com/s/question/0D52T00004mXXV4/how-to-insert-the-date-value-into-oracle-database-using-mule-4