首页 > 解决方案 > 在单个事务中多次调用 1 个 DB2 存储过程

问题描述

这在 DB2 中可行吗?SP1 返回一个结果集。我正在尝试从 Java 客户端执行此操作。第一次调用返回结果集,但第二次调用没有。

我有以下要求。我需要在单个事务中进行 2 个或更多存储过程调用。如果任何调用失败,我需要回滚事务。对 SP 的第一次调用成功但每当我对存储过程进行第二次调用时我在 result.get("#result-set-1"); 处获取 Null .它不应该为空。但是当我将@Transactional 移动到存储库类(方法)时,它可以工作,但是两个 SP 调用显然都被视为单独的事务。但这不是我的要求。我该如何解决这个问题?

start transaction 
 call  stored procedure SP1 n times .( n is variable)
 commit transaction.



public class ServiceA{

     @Transactional
     void saveInDB()
     {
     
            
for( int i =0 ;  i< 2 ;i++)
{
  repositoryA.save(list.get(i)
 }

}

存储库类 RepositoryA 类如下

@Repository
public class RepositoryA {
    

    public DataRetuned getData(String str) 
    
    {
    

     
        
        Map<String, Object> result =
                simpleJdbcCallFactory.execute
                (
                 // pass required params here
                ); 
        
        
        List<DataRetuned> dataRetuned =  (List<DataRetuned>) result.get("#result-set-1"); //result set returned

        
        return dataRetuned;

标签: databasejdbctransactionsdb2spring-jdbc

解决方案


推荐阅读