2012-11-20 52 views
0

我正在嘗試使用Mule 3.3.0執行存儲過程到來自SQL Server 2008數據庫的SELECT數據。執行存儲過程以選擇數據 - Mule 3.3.0

在Mule文檔中有關於使用Oracle做這件事的信息。我不確定這是否可以使用SQL Server。

這是我的騾子端點配置

<jdbc:outbound-endpoint exchange-pattern="request-response" queryTimeout="-1" connector-ref="sqlServerConnector" queryKey="selectCoupons" doc:name="Database"> 
    <jdbc:query key="selectCoupons" value="call sp_get_coupons()"/> 
</jdbc:outbound-endpoint> 

這是輸出

Root Exception stack trace: 
java.sql.SQLException: The executeUpdate method must not return a result set. 
    at net.sourceforge.jtds.jdbc.JtdsStatement.processResults(JtdsStatement.java:603) 
    at net.sourceforge.jtds.jdbc.JtdsStatement.executeSQL(JtdsStatement.java:546) 
    at net.sourceforge.jtds.jdbc.JtdsPreparedStatement.executeUpdate(JtdsPreparedStatement.java:506) 
    + 3 more (set debug level logging or '-Dmule.verbose.exceptions=true' for everything) 

我使用的JTDS驅動程序。用JDBC客戶端測試存儲過程我得到了預期的resultSet。

有什麼建議嗎?

+0

沒做過什麼用的。但是你不會使用像「exec sp _....」這樣的東西。 「呼叫」看起來很奇怪。 – stb

+0

也許mule無法獲得存儲過程的結果,但實際上它已被執行。你可以通過創建一個自己的存儲過程來更新一些值來嘗試。 – stb

+0

已經嘗試過。這是我得到的:java.lang.IllegalArgumentException:沒有發現SQL語句的SQL策略:exec sp_get_coupons() – Daniel

回答

-1

<db:stored-procedure config-ref="Oracle_Configuration1" doc:name="Database"> 
 
      <db:parameterized-query><![CDATA[{call apps.create_sales_Order(:p_header_rec_oper,:P_order_number,:P_ordered_date,:P_line_id,:p_flow_Status_code,:P_return_status)}]]></db:parameterized-query> 
 
      <db:in-param name="p_header_rec_oper" value="CREATE"/> 
 
      <db:out-param name="P_order_number" type="INTEGER"/> 
 
      <db:out-param name="P_ordered_date" type="DATE"/> 
 
      <db:out-param name="P_line_id" type="VARCHAR"/> 
 
      <db:out-param name="p_flow_Status_code" type="VARCHAR"/> 
 
      <db:out-param name="P_return_status" type="VARCHAR"/> 
 
      
 
</db:stored-procedure> 
 

 
{ 
 
• \t P_return_status: "S", 
 
• \t P_line_id: "684229", 
 
• \t p_flow_Status_code: "ENTERED", 
 
• \t P_ordered_date: "2015-05-22", 
 
• \t P_order_number: 69393 
 
}