我有一个示例流程,通过在SqlServer 2008R2 express实例上调用存储过程来“选择”记录。
流程在Mule Studio中按预期工作,但当部署到Mule独立版3.4.0时,调用失败并显示错误
为更新生成了结果集。(SQL代码:0,SQL状态:+ null)
使用的驱动程序是Microsoft的sqljdbc4.0
有谁知道如何解决这个问题?
由于
<mule xmlns:quartz="http://www.mulesoft.org/schema/mule/quartz" xmlns:jdbc="http://www.mulesoft.org/schema/mule/jdbc" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:spring="http://www.springframework.org/schema/beans" version="CE-3.4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/quartz http://www.mulesoft.org/schema/mule/quartz/current/mule-quartz.xsd
http://www.mulesoft.org/schema/mule/jdbc http://www.mulesoft.org/schema/mule/jdbc/current/mule-jdbc.xsd">
<jdbc:mssql-data-source name="MS_SQL_Data_Source" user="test" password="test" url="jdbc:sqlserver://xxx;databaseName=test" transactionIsolation="UNSPECIFIED" doc:name="MS SQL Data Source"/>
<jdbc:connector name="JDBC" validateConnections="true" queryTimeout="-1" pollingFrequency="0" doc:name="JDBC" transactionPerMessage="false" dataSource-ref="MS_SQL_Data_Source"/>
<flow name="DBTestFlow1" doc:name="DBTestFlow1">
<quartz:inbound-endpoint jobName="SQL-Purge" repeatInterval="10000" responseTimeout="10000" doc:name="Quartz">
<quartz:event-generator-job/>
</quartz:inbound-endpoint>
<logger message="Starting test" level="INFO" doc:name="Logger"/>
<jdbc:outbound-endpoint exchange-pattern="request-response" queryKey="IsOOh" queryTimeout="-1" connector-ref="JDBC" doc:name="Database">
<jdbc:query key="IsOOh" value="CALL IsOOH(#[function:now],#[null])"/>
</jdbc:outbound-endpoint>
<logger message="Query Result = #[payload]" level="INFO" doc:name="Logger"/>
</flow>
</mule>
答案 0 :(得分:1)
看起来您正在使用CE JDBC传输。如果这是正确的那么那就是你的问题。
CE版本无法处理对存储过程的调用中的结果集。请参阅JDBC Transport文档[1]中的Feature表。
它在MuleStudio中工作的原因是,由于某种原因,即使选择了CE运行时,工作室似乎也使用EE JDBC传输。我已将此报告为问题[2]。
您还可以在JDBC传输代码[3]中看到,对于以CALL开头的SQL语句,将导致QueryRunner的更新。
您应该可以通过定义自己的Sqlstatementstrategyfactory [4]来覆盖它。
[1] http://www.mulesoft.org/documentation/display/current/JDBC+Transport+Reference
[2] https://www.mulesoft.org/jira/browse/STUDIO-3817
[3] https://github.com/mulesoft/mule/blob/mule-3.x/transports/jdbc/src/main/java/org/mule/transport/jdbc/sqlstrategy/DefaultSqlStatementStrategyFactory.java
[4] http://www.mulesoft.org/documentation/display/current/JDBC+Transport+Configuration+Reference
// Pontus
答案 1 :(得分:0)
M<log V
过程调用的示例语法