我试图在Mule ESB(与Salesforce连接)的where子句中使用带有flowvariable的查询
SELECT id FROM Account WHERE CX_ID__c = '"flowvars.orgpayload.CXM_ID+"' LIMIT 1
但我在这里没有收到错误。有关如何在查询中使用流变量的任何指针都会有所帮助。谢谢!
答案 0 :(得分:1)
可以通过MEL访问流变量,包括flowVars.VAR_NAME
,flowVars['VAR_NAME']
(如果变量包含与MEL语法冲突的字符)或直接VAR_NAME
(如果您尚未禁用默认值)将流量变量绑定为顶级MEL变量)。
在您的情况下,由于流变量名为orgpayload.CXM_ID
,因此.
使其与MVEL语法冲突。因此,您无法使用flowVars.orgpayload.CXM_ID
,而是必须使用flowVars['orgpayload.CXM_ID']
PS。 MEL区分大小写。您想要flowvars
flowVars
答案 1 :(得分:1)
在你的情况下,我会有类似的打击
SELECT id FROM Account WHERE CX_ID__c = '#[flowVars['orgpayload.CXM_ID']]' LIMIT 1
除了上述内容之外,您还应考虑使用参数化查询而不是动态查询,因为动态查询容易SQL injection attacks,并且在比较时性能较差参数化查询。
请参阅此document