Question

j'ai un SQL UPDATE instruction, pour mettre à jour un enregistrement particulier dans la base de données dans un flux mulet.J'ai des problèmes pour inclure l'expression MEL dans l'instruction et le SQL n'est pas exécuté dans mon flux.

J'essaye la commande suivante :

UPDATE CUSTOMERS SET STATUS=#[flowVars['TxnStatus']] WHERE REF_NUM=#[flowVars['ReferenceNumber']]

TxnStatus et ReferenceNumber sont des variables de flux dans ma mule Flow.Cela semble simple en apparence, mais le dossier n’est pas mis à jour.

Quand j'essaie un similaire SELECT instruction avec des expressions MEL, elle récupère la valeur pour moi.S'il vous plaît laissez-moi savoir vos pensées.

Merci,

Fichier de configuration ajouté :

<?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>
Était-ce utile?

La solution

J'ai rencontré des problèmes similaires en essayant d'utiliser une variable de flux comme valeur d'entrée SQL.Essayez de remplacer #[flowVars['varName']] avec #[variable:varName] ainsi:

UPDATE CUSTOMERS SET STATUS=#[variable:TxnStatus] WHERE REF_NUM=#[variable:ReferenceNumber]

Cela a fonctionné pour moi.J'espère que cela pourra aider!

Autres conseils

Je peux voir la différence entre la valeur que vous avez utilisée dans la clé de requête et la commande donnée ci-dessus

value="MISE À JOUR DU STATUT DES CLIENTS=#[flowVars['TxnStatus'] OÙ PAYMENT_REFERENCE_NUMBER=#[flowVars['TxnReference']"/>

Les deux manquent de fin ] dans la valeur de la requête.Corrigez-le et réessayez.

UPDATE audit_detail
SET
  status = '3'
WHERE
  request_id = #[flowVars['ses_request_id']
AND
  message_id = #[flowVars['ses_message_id']
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top