2014-06-07 44 views
0
带参数的存储过程

我已经......我使用的骡子JDBC和下面的配置,我主持使用骡子... web服务检索MS SQL数据库中数据的Web服务: -如何使用骡子

<context:property-placeholder location="classpath:conf/DBConnectionProp.properties"/> 
     <spring:beans> 
      <spring:bean id="DB_Source" name="DB_Source" class="org.enhydra.jdbc.standard.StandardDataSource"> 
       <spring:property name="url" value="${url}"/> 
       <spring:property name="driverName" value="${driverName}"/> 
      </spring:bean> 
      <spring:bean id="LookUp" name="LookUp" class="com.test.MainDataDAOImpl"> 
       <spring:property name="dataSource" ref="DB_Source"/> 
      </spring:bean> 
     </spring:beans> 
     <jdbc-ee:connector name="Database_Global" dataSource-ref="DB_Source" validateConnections="true" queryTimeout="-1" pollingFrequency="0" doc:name="Database"> 
      <!-- <jdbc-ee:query key="RetriveQuery" value="Select * from getData where ID=?"/> --> 
      <jdbc-ee:query key="RetriveQuery" value="CALL sp_myStoredProcedure(?) "/> 
      </jdbc-ee:connector> 

    <flow name="MuleDbInsertFlow1" doc:name="MuleDbInsertFlow1"> 
    <http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8082" path="mainData" doc:name="HTTP"/> 
    <cxf:jaxws-service service="MainData" serviceClass="com.test.MainData" doc:name="SOAPWithHeader" /> 
    <component class="com.test.MainDataImpl" doc:name="JavaMain_ServiceImpl"/> 
</flow> 

现在由于我使用存储过程sp_myStoredProcedure我得到异常(?): -

org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [CALL sp_myStoredProcedure(?) ]; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near '@P0'. 
    at org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:98) 
    at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72) 
    at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80) 
    at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80) 
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:603) 
    at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:637) 
    at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:666) 
    at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:674) 
    at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:714) 
    at com.vertu.services.schema.maindata.v1.Dao.MainDataDAOImpl.retrieveFromDBMethod(MainDataDAOImpl.java:102) 
    at com.vertu.services.schema.maindata.v1.Impl.MainDataImpl.retrieveDataOperation(MainDataImpl.java:73) 

但是,如果使用普通的SQL查询: - Select * from getData where ID=?它工作正常,没有任何问题......在我的DAOImpl课程是我们的荷兰国际集团下面的代码: -

String retrieveDataFromDB = getQueryByKey("RetriveQuery"); 

jdbcTemplate.query(retrieveDataFromDB, new Object[] { ID }, 
        new RowMapper() { 

         @Override 
         public Object mapRow(ResultSet rs, int line) 
           throws SQLException { 
          System.out.println("inside row mapper"); 
          // Display records 
          dataResponse.setId(rs.getInt("ID")); 
          dataResponse.setName(rs.getString("NAME")); 
          dataResponse.setAge(rs.getInt("AGE")); 
          dataResponse.setDesignation(rs 
            .getString("DESIGNATION")); 
          dataResponse 
            .setResponse("The Data retrieved from the Database"); 
          return 1; 
} 
}); 

请帮助...什么是存储过程的问题,即是正常的SQL查询工作正常参数???

+0

请停止碰撞你的问题,否则我们将被迫将其锁定,这将阻止它完全得到答案。 – BoltClock

+0

什么问题? –

+0

问题是,反复碰撞您的问题是具有破坏性和不考虑的。 – BoltClock

回答

0

请查阅最新版本的mule 3.6存储过程调用用法。

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

+0

谢谢..但是,这已经完成,是非常旧的线程,我实际上是用旧的JDBC组件 –