2014-02-11 32 views
0

我在我的配置中使用了這段代碼,我使用一個變量作爲'WHERE'子句的一部分從數據庫中檢索一些值。Mule:JDBC選擇不能使用#[variable]的值

<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> 

由於沒有從數據庫返回的結果,因此此行不提供輸出。

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

這應該工作正常,可能是數據庫相關的問題。如果您嘗試MRZIP ='59718',會發生什麼情況? –

+0

感謝安東,甚至我認爲這應該工作,但不會猜測。當我嘗試MRZIP ='59718'我得到一個錯誤,org.mule.api.processor.LoggerMessageProcessor:爲MKT選擇的值:[] 錯誤2014-02- 11 18:56:34,321 [[salesorderservice] .SalesOrderProcess_pickOut.stage1.02] org.mule.exception.CatchMessagingExceptionStrategy: ************************ ************************************************** ****** 消息:執行表達式「message.payload [0] .MRPMKT」失敗。 (org.mule.api.expression.ExpressionRuntimeException)。消息有效負載的類型爲:ArrayList – insaneyogi

回答

0

嘗試郵政編碼變量設置爲整數,或使用WHERE MRZIP=#[Integer.parseInt(zipcode)]。我想你的數據庫不喜歡引用整數有問題。

0

嘗試通過使用數據庫特定功能將查詢中的值轉換爲數字。

例如ORACLE/PLSQL和TO_NUMBER函數:

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