Spring批处理:storedProcedureItemReader无效的参数索引0

时间:2018-04-23 08:50:46

标签: java spring stored-procedures spring-batch java-stored-procedures

我尝试使用带有storedProcedureItemReader的spring批处理 我总是得到这个例外 我无法在BBDD

中找到使用Sybase的错误
org.springframework.batch.item.ItemStreamException: Failed to initialize the reader
Caused by: org.springframework.jdbc.BadSqlGrammarException: Executing stored procedure; bad SQL grammar [{call PROCEDURE(?)}]; nested exception is java.sql.SQLException: Invalid parameter index 0.
Caused by: java.sql.SQLException: Invalid parameter index 0.

这是java spring code

@Bean
    protected ItemReader<AuditKpi> auditKpiRead(DataSource dataSource) throws Exception{

        StoredProcedureItemReader<AuditKpi> storedProcedureItemReader = new StoredProcedureItemReader<AuditKpi>();
        SqlParameter[] parameter = {new SqlParameter("@INDATE", Types.SQL_DATETIME)};  
        PreparedStatementSetter stament = new PreparedStatementSetter() {

            @Override
            public void setValues(PreparedStatement ps) throws SQLException {
                ps.setDate(1, new java.sql.Date(new Date().getTime()));
            }
        };

        storedProcedureItemReader.setDataSource(dataSource);
        storedProcedureItemReader.setProcedureName("PROCEDURE");
        storedProcedureItemReader.setRowMapper(new BeanPropertyRowMapper<AuditKpi>(AuditKpi.class));
        storedProcedureItemReader.setParameters(parameter);
         storedProcedureItemReader.setPreparedStatementSetter(stament);
         storedProcedureItemReader.afterPropertiesSet();
         storedProcedureItemReader.setVerifyCursorPosition(false);
         System.out.println(storedProcedureItemReader.getSql());
        return storedProcedureItemReader;

    }

这是我的SQL代码

CREATE PROCEDURE PROCEDURE (IN @INDATE DATE)
AS
...
GO

请求帮助

0 个答案:

没有答案