0

みなさん、おはようございます。

JDBC ORACLE データベース クエリでの MEL 式の使用に問題があります。

特に、Mule フローは、Datamapper を介して Map に変換される Excel ファイルを受け入れ、そのフィールドを使用して、次の形式でデータベースにクエリを作成します。

<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 の問題です。

mullable 値を受け入れるために MEL 例外をバイパスする方法を知っている人はいますか?

みんなに前もって感謝します

スローされる例外は次のとおりです。 * org.mule.api.expression.RequiredValueException: 式「xy」を持つ式評価子「bean」が null を返しましたが、値が必要でした。*

4

2 に答える 2

3

解決策を見つけました。私は同じ問題を抱えている誰かのためだけにここに書きます。

MEL 式の値をオプションにしたい (つまり、NULL 値が正しい値である) 場合は、「?」を記述する必要があります。MEL 式の末尾。

#[map-payload:P_medioMSD_ACQ?]

「?」を付ける 値はオプションで、NULL 値が受け入れられます

于 2013-10-29T09:03:30.490 に答える
0

それらを に渡す前にMEL、フィールドが であるかどうかを確認してくださいNOT NULL。特定のフィールドが常に になることがわかっている場合はNULL、挿入クエリでそれを指定しないでください。db のデフォルト値が取得されますNULL

于 2013-10-28T13:41:02.207 に答える