0

大家早上好。

我在 JDBC ORACLE 数据库查询中使用 MEL 表达式时遇到问题。

特别是 Mule 流接受一个 Excel 文件,该文件通过 Datamapper 在 Map 中转换,其字段用于以这种形式在数据库中进行查询:

<jdbc-ee:query key="Fill Table" value="INSERT INTO BUFF_SBIL_ZONALE (DATA_ORA,MACRO_ZONA,SEGNO_SBIL,PRZ_MSD_VEN,PRZ_MSD_ACQ,ID_BIS,FILE_NAME,DATA_LOAD)                                                 
VALUES (TO_DATE(#[map-payload:DATA_ORA], 'DD/MM/YYYY  hh:mi:ss'),#[map-payload:MACROZONA],#[map-payload:SEGNO],#[map-payload:P_medioMSD_VEN],#[map-payload:P_medioMSD_ACQ],#[message.inboundProperties['correlationId']],#[message.InvocationProperty['originalFilename']],SYSDATE)"/>

查询似乎正确,但是当我执行应用程序时,我收到一个异常,提示我#[map-payload:P_medioMSD_VEN]为 NULL(正确,因为在 Excel 文件中它不存在)并且 MEL 表达式无法读取 NULL价值。因此,问题不是 SQL 问题,而是不接受 NULL 数据库字段值的 MEL 问题。

有人知道如何绕过 MEL 异常以接受 mullable 值吗?

提前感谢大家

抛出的异常是: * org.mule.api.expression.RequiredValueException:带有表达式“xy”的表达式求值器“bean”返回空值,但需要一个值。*

4

2 回答 2

3

I found the solution. I'll write here just for someboby that will have the same problem.

If you want to make a MEL expression value optional (i.e. a NULL value is a right value), you should write a '?' at the end of a MEL expression.

#[map-payload:P_medioMSD_ACQ?]

Putting a '?' the value is optional and a NULL value is accepted

于 2013-10-29T09:03:30.490 回答
0

在将它们传递给之前MEL,请检查字段是否为NOT NULL. 如果您知道某些字段将始终为NULL,则根本不要在插入查询中指定它,它将NULL在 db 中获得默认值

于 2013-10-28T13:41:02.207 回答