2014-06-09 10 views
4

我用存儲過程...(參考: - http://www.mulesoft.org/documentation/display/current/Database+Connector)測試騾子的騾子3.5的新的數據庫連接調用從騾3.5存儲過程。我有以下存儲過程: -如何使用新的數據庫端點

ALTER PROCEDURE [dbo].[sp_retrieveData] 
@Id int 
AS 
Select * from getData Where ID = @Id 

哪個在Mule的舊JDBC連接器中工作正常......我曾經使用以下語法從JDBC端點調用存儲過程: - <jdbc-ee:query key="RetriveQuery" value="CALL sp_retrieveData(${Id})"/>哪些工作正常...但現在問題出現在Mule 3.5新增數據庫端點我無法調用相同的存儲過程...我的騾子配置是: -

<db:stored-procedure config-ref="Generic_Database_Configuration" doc:name="Database"> 
    <db:parameterized-query><![CDATA[CALL sp_retrieveData(58)]]></db:parameterized-query> 
    <db:in-param name="Id" type="INTEGER" value="58"/> 
    </db:stored-procedure> 

所以,我的問題是我怎麼能叫存儲過程使用新的DB終點......假如沒有人嘗試過??? ...請幫助...

更新: - 以下例外我得到: -

Exception stack is: 
1. The index 1 is out of range. (com.microsoft.sqlserver.jdbc.SQLServerException) 
    com.microsoft.sqlserver.jdbc.SQLServerException:170 (null) 
2. The index 1 is out of range. (com.microsoft.sqlserver.jdbc.SQLServerException). Message payload is of type: String (org.mule.api.MessagingException) 
    org.mule.module.db.internal.processor.AbstractDbMessageProcessor:81 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/MessagingException.html) 
-------------------------------------------------------------------------------- 
Root Exception stack trace: 
com.microsoft.sqlserver.jdbc.SQLServerException: The index 1 is out of range. 
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:170) 
    at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.setterGetParam(SQLServerPreparedStatement.java:698) 
    at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.setObject(SQLServerPreparedStatement.java:928) 
    + 3 more (set debug level logging or '-Dmule.verbose.exceptions=true' for everything) 
******************************************************************************** 
+0

你會得到什麼異常?請將其添加到您的問題中。 –

+0

更新了異常詳細信息... –

回答

14

海事組織的任何事情的最佳文檔是其測試。對於DB模塊的存儲程序測試在這裏:https://github.com/mulesoft/mule/tree/mule-3.5.0/modules/db/src/test/resources/integration/storedprocedure

在此基礎上,下面應該工作:

<db:stored-procedure config-ref="Generic_Database_Configuration"> 
    <db:parameterized-query>{ call sp_retrieveData(:Id) }</db:parameterized-query> 
    <db:in-param name="Id" value="58" /> 
</db:stored-procedure> 

(我沒有測試它雖然)

+1

哦,我的上帝..它的工作..我在網上搜索......但由於它是一個新的連接器沒有多少描述可用......感謝大衛的幫助... –

2

示例存儲過程調用:

<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> 
相關問題