当前位置: 首页 > 知识库问答 >
问题:

Java Spring批处理StoredProcedureItemReader实现(SYSBASE IQ)

瞿和硕
2023-03-14
@Bean(destroyMethod="")
@StepScope
public StoredProcedureItemReader<TransactionReportingBean>  dataExtractReader(
    @Value("#{jobParameters[clientName]}") String clientName) throws Exception {

    StoredProcedureItemReader<TransactionReportingBean> 
    storedProcedureItemReader = new StoredProcedureItemReader<>();    
    storedProcedureItemReader.setDataSource(sybaseIqSource);

    storedProcedureItemReader.setProcedureName("getResult"); /**getClientPositionIBORData**/
    SqlParameter[] parameters = {new SqlParameter("ClientName", Types.VARCHAR)};
    storedProcedureItemReader.setParameters(parameters);

    storedProcedureItemReader.setPreparedStatementSetter(new PreparedStatementSetter() {
        @Override
        public void setValues(PreparedStatement arg0) throws SQLException {
            arg0.setString(1,clientName);
         }
        });

    storedProcedureItemReader.setRowMapper(new BeanPropertyRowMapper<TransactionReportingBean>(TransactionReportingBean.class));
    storedProcedureItemReader.afterPropertiesSet();

    storedProcedureItemReader.setVerifyCursorPosition(false);
    storedProcedureItemReader.close();
    return storedProcedureItemReader;
}

错误:

共有1个答案

阚夕
2023-03-14

首先,您需要删除StoredProcedureItemReader.close(),Spring批处理将在结果集的末尾自动关闭读取器。

根据stacktrace,您可能需要将refcursorposition设置为1:

storedProcedureItemReader.setRefCursorPosition(1);

希望这有帮助。

 类似资料:
  • 我正在尝试使用StoredProcedureItemReader for Cursor读取spring批处理中的一个DB2存储过程。sql字符串未被执行,默认sql被传递给jdbctemplate 我正在使用由作业调用的批处理步骤: 为什么我没有得到结果集或者无法执行查询。我是个新手,有点卡住了。调试显示,数据源配置正确。 谢谢!

  • 我得到了非法状态例外。我试图通过设置以下参数来解决它 有人知道怎么回事吗? 我在Application.Properties中的配置如下: @计划参数 ETL.Scheduler.Frequency=3600000 这是ItemReader实现的重要部分。如果需要更多的信息,请告诉我。 编辑 我所有的bean都在配置文件中,所以我一开始就初始化它们。并使用排定程序运行作业。为什么作业执行再次尝试重

  • 我必须在Spring批处理作业中实现以下用例: 通过读取提供程序列表 遍历列表,并为步骤1中找到的每个提供程序(作为输入参数)调用另一个。 第二个SP的输出将写入CSV。 我提出了以下策略: 第1步开始 SP ItemReader返回提供程序列表。 在ItemWriter中,将提供程序保存到 步骤1结束 第2步开始 另一个SP项目读取器从访问提供程序 另一个ItemWriter使用FlatFile

  • 本文向大家介绍mybatis-plus批处理IService的实现示例,包括了mybatis-plus批处理IService的实现示例的使用技巧和注意事项,需要的朋友参考一下 一、pom文件引入 二、Controller层 三、IService层(此处请确保继承的是 mybatisplus下的 IService,上述的UserInfoEntity为实体类) 四、ServiceImpl(UserIn

  • 本文向大家介绍python实现感知器算法(批处理),包括了python实现感知器算法(批处理)的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Python感知器算法实现的具体代码,供大家参考,具体内容如下 先创建感知器类:用于二分类 然后为Iris数据集创建一个Iris类,用于产生5折验证所需要的数据,并且能产生不同样本数量的数据集。 然后我们进行训练测试,先使用one agains

  • 我正在尝试更改现有的spring批处理作业(XML配置),它从oracle数据库读取数据,并以所需格式写入txt和XML文件,但现在我想更改相同的实现,从Cassandra数据库而不是oracle读取数据,但我在spring批处理中找不到类似于JdbcCursorItemReader的项目读取器。 有人能告诉我应该使用哪个ItemReader从Cassandra DB读取数据吗?或者我需要创建一个