我有一个SQL UPDATE
语句,用于在骡子流中将特定记录更新到数据库。我在语句中包含MEL表达式时遇到问题,并且SQL没有在我的流程中执行。
我正在尝试下一个命令:
UPDATE CUSTOMERS SET STATUS=#[flowVars['TxnStatus']] WHERE REF_NUM=#[flowVars['ReferenceNumber']]
其中TxnStatus
和ReferenceNumber
是我的mule Flow中的流变量。它看起来很简单,但记录没有更新。
当我尝试使用MEL表达式的类似SELECT
语句时,它确实为我检索了值。请让我知道你的想法。
谢谢,
添加了配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<jdbc-ee:mssql-data-source name="MuleDB_DataSource" user="${MuleDB_User}" password="${MuleDB_Password}" url="${MuleDB_URL}" transactionIsolation="UNSPECIFIED" doc:name="MS SQL Data Source"/>
<jdbc-ee:connector name="Database" dataSource-ref="MuleDB_DataSource" validateConnections="true" queryTimeout="-1" pollingFrequency="10000" doc:name="Database" transactionPerMessage="false">
</jdbc-ee:connector>
<flow name="ExceptionFlowFlow1" doc:name="ExceptionFlowFlow1">
<vm:inbound-endpoint exchange-pattern="one-way" path="Exception" doc:name="VM"/>
<set-variable variableName="ExceptionPayload" value="#[payload]" doc:name="ExceptionPayload"/>
<set-variable variableName="TxnStatus" value="Failure" doc:name="Variable"/>
<logger message="#[variable:TxnStatus]" level="INFO" category="Status" doc:name="Logger"/>
<jdbc-ee:outbound-endpoint exchange-pattern="one-way" queryKey="Update_Status" queryTimeout="-1" connector-ref="Database" doc:name="Update_Status">
<jdbc-ee:query key="Update_Status" value="UPDATE CUSTOMERS SET STATUS=#[flowVars['TxnStatus'] WHERE PAYMENT_REFERENCE_NUMBER=#[flowVars['TxnReference']"/>
</jdbc-ee:outbound-endpoint>
<logger message="#[payload]" level="INFO" doc:name="Logger"/>
<catch-exception-strategy doc:name="Catch Exception Strategy">
<logger message="#[exception]" level="INFO" category="ExceptionFlow failed with the exception --" doc:name="Logger"/>
</catch-exception-strategy>
</flow>
</mule>
答案 0 :(得分:1)
我可以看到您在查询键中使用的值与您在上面给出的命令之间的区别
value =&#34;更新客户设置状态= #[flowVars['TxnStatus']
WHAY PAYMENT_REFERENCE_NUMBER = #[flowVars['TxnReference']
&#34; /&gt;
两者都缺少查询值中的结束]
。纠正它并再试一次。
答案 1 :(得分:0)
在尝试将流变量用作SQL输入值时,我遇到了类似的问题。尝试将#[flowVars['varName']]
替换为#[variable:varName]
,如下所示:
UPDATE CUSTOMERS SET STATUS=#[variable:TxnStatus] WHERE REF_NUM=#[variable:ReferenceNumber]
这对我有用。希望有所帮助!
答案 2 :(得分:0)
UPDATE audit_detail
SET
status = '3'
WHERE
request_id = #[flowVars['ses_request_id']
AND
message_id = #[flowVars['ses_message_id']