Mule:JDBC选择不使用#[variable]值

时间:2014-02-11 23:11:39

标签: sql jdbc mule

我在配置中有这段代码,我使用变量作为'WHERE'子句的一部分来从数据库中检索一些值。

    <logger message="ZIP CODE:#[zipcode] " level="INFO" doc:name="Logger"></logger>
    <jdbc-ee:outbound-endpoint exchange-pattern="request-response" queryTimeout="-1" 
     connector-ref="Database" doc:name="Get Information" queryKey="Select MKT">
    <jdbc-ee:query key="Select MKT" value="SELECT PRIMARY,SECONDARY FROM MKT 
     WHERE  MRZIP=#[zipcode]"/>
    </jdbc-ee:outbound-endpoint> 
    <logger message="VALUES Selected for MKTREL : #[message.payload]" 
    level="INFO" doc:name="logger"></logger> 

此行不提供输出,因为没有从DB返回的结果。

    ZIP CODE:59718 
    INFO  2014-02-11 14:58:19,057 [[salesorderservice].SalesOrderProcess_pickOut.stage1.02]     
    INFO  2014-02-11 14:58:19,093 [[salesorderservice].SalesOrderProcess_pickOut.stage1.02]  
    : VALUES Selected for MKTREL : []

然而,当我对值进行硬编码时,我得到了正确的结果:

    <jdbc-ee:query key="Select MKT" value="SELECT PRIMARY,SECONDARY FROM MKT 
     WHERE  MRZIP=59718"/>

输出是:

    VALUES Selected for MKTREL : [{PRIMARY=76, SECONDARY=45}]

我在这里错过了什么吗?

-S

2 个答案:

答案 0 :(得分:0)

尝试将zipcode变量设置为Integer,或使用WHERE MRZIP=#[Integer.parseInt(zipcode)]。我猜你的数据库有问题,不喜欢引用的整数。

答案 1 :(得分:0)

尝试使用特定于数据库的函数将查询中的值转换为数字。

e.g。 ORACLE / PLSQL和TO_NUMBER函数:

<jdbc-ee:query
    key="Select MKT"
    value="SELECT PRIMARY,SECONDARY FROM MKT WHERE  MRZIP=TO_NUMBER(#[zipcode])"
/>