Java SQL存储过程中多列游标内容的循环插入

Java SQL存储过程中多列游标内容的循环插入,java,sql,oracle,stored-procedures,jdbc,Java,Sql,Oracle,Stored Procedures,Jdbc,我正在用ORacle编写一个复杂的存储过程,作为JDBC Java程序的一部分,它可以完成一些事情 首先,它需要执行一个非常复杂的选择,将信息读入光标,光标的每一行表示发票的行项目。输出游标中大约有10列。对于游标的每一行,需要将部分但不是全部字段插入另一个表(称为LineItem),此外,我需要获取游标中所有这些行的总数,并在发票表中创建父行 将光标读回Java应用程序,然后根据需要执行插入操作,这样会更容易吗?还是可以在同一个存储过程中执行所有这些操作?我认为应该使用多个存储过程来避免复杂性

我正在用ORacle编写一个复杂的存储过程,作为JDBC Java程序的一部分,它可以完成一些事情

首先,它需要执行一个非常复杂的选择,将信息读入光标,光标的每一行表示发票的行项目。输出游标中大约有10列。对于游标的每一行,需要将部分但不是全部字段插入另一个表(称为LineItem),此外,我需要获取游标中所有这些行的总数,并在发票表中创建父行


将光标读回Java应用程序,然后根据需要执行插入操作,这样会更容易吗?还是可以在同一个存储过程中执行所有这些操作?我认为应该使用多个存储过程来避免复杂性,但我不确定是否可以做到这一点,并将其全部保留为一个事务的一部分

我试图避免创建一个超级复杂的存储过程,但也不想要一个可怕的解决方案


谢谢

我们也有类似的情况(处理发票及其行项目),我们采取以下措施:

  • 以1000个一批的方式检索行项目(以避免java程序同时被太多的项目淹没)
  • 使用行项目记录中的必需列将记录插入行项目表
  • 在遍历这些表示行项目的记录时,推导标题记录的详细信息
  • 在成批处理所有行项目之后,将标题记录插入数据库

  • 我们使用JPA(带hibernate)和Spring来实现这一点,上面的所有步骤都在一个事务中执行

    “将光标读回Java应用程序会更容易吗…?”可能会更容易,但性能肯定会很差。为什么光标会选择显然没有使用的列?如果你能提供更多的细节,这将是很有帮助的,这样我们就可以了解你想要实现的目标。