我正在ORacle中编写一个复杂的存储过程,它可以做几件事,作为使用JDBC的Java程序的一部分。
首先,它需要执行一个非常复杂的SELECT来将信息读入游标,游标的每一行表示发票的lineitem。输出游标中大约有10列。对于游标的每一行,一些但不是所有的字段都需要插入到另一个表(称为LineItem)中,除此之外,我需要获取游标中所有这些行的总和并创建一个父行。发票表。
将光标读回Java应用程序是否更容易,然后根据需要迭代执行INSERTS的内容,或者是否可以在同一存储过程中执行所有这些操作?我认为应该使用多个存储过程来避免复杂性,但我不确定是否可以这样做并且所有这些都保留为一个事务的一部分。
我试图避免创建一个超级复杂的存储过程,但也不想要一个可怕的解决方案。
由于
答案 0 :(得分:2)
我们也有类似情况(处理发票及其订单项),我们会执行以下操作:
我们使用JPA(使用hibernate)和Spring,并且所有上述步骤都在一个事务中执行。