执行存储过程以选择数据 - Mule 3.3.0

时间:2012-11-20 15:02:06

标签: sql-server sql-server-2008 mule jtds

我尝试使用Mule 3.3.0从SQL Server 2008数据库执行存储过程到SELECT数据。

在Mule文档中,有关于使用Oracle执行此操作的信息。我不确定SQL Server是否可以这样做。

这是我的Mule端点配置

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

有什么建议吗?

1 个答案:

答案 0 :(得分:-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>

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