我在配置中有这段代码,我使用变量作为'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
答案 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])"
/>