使用spring从db2数据库调用存储过程到java代码

Posted

技术标签:

【中文标题】使用spring从db2数据库调用存储过程到java代码【英文标题】:Calling a stored procedure from db2 database to java code using spring 【发布时间】:2014-08-07 10:59:33 【问题描述】:

我正在尝试从 Java 代码调用存储过程。过程在 DB2 中运行良好,但是当我使用 Spring 应用它并运行 java 代码时,它没有插入我在存储过程中编写逻辑的记录。

DB2 中的存储过程代码:

CREATE PROCEDURE MFAA.sample_pal(
IN Stmt varchar(2048)
) 
LANGUAGE SQL 
BEGIN 
--    declare      Stmt              varchar(2048); 
-- set Stmt = 'PALLAVI';
-- print Stmt;
-- select Stmt;
--DBMS_OUTPUT.PUT_LINE('Value : '||Stmt);
insert into MFAA.DUMMYTABLE values(Stmt);
return 0;
END

java代码:

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.simple.SimpleJdbcCall;
import org.springframework.jdbc.support.rowset.SqlRowSet;

import java.util.*;

public class callprocedure 

    private JdbcTemplate jdbctemplate;
     private SimpleJdbcCall jdbcCall;


    public JdbcTemplate getJdbctemplate() 

        ApplicationContext cx=new ClassPathXmlApplicationContext("db2Context.xml");
        this.jdbctemplate=(JdbcTemplate) cx.getBean("jdbcTempDB2");
        return jdbctemplate;
    

    public void setJdbctemplate(JdbcTemplate jdbctemplate) 
        this.jdbctemplate = jdbctemplate;
        //this.jdbcCall= new     SimpleJdbcCall(jdbctemplate).withProcedureName("sample_pal");
    
    public static void main(String[] args) 
        String name="Pradeep";
     try
        
         JdbcTemplate jt=new DbConnection().getJdbctemplate();              

          System.out.println("CALL STORED PROCEDURES");

          int rs=jt.update("call sample_pal(?)",name);
          System.out.println("Result : "+rs);
        catch(Exception e)
        
            System.out.println(e.getMessage());
        

   

【问题讨论】:

【参考方案1】:

在已共享的 java 代码中,我们需要使用 schema_name.proceure_name() 调用该过程,然后它才能工作。所以在共享的代码中只需更改int rs=jt.update("call sample.sample_pal(?)",name);

其中sample 是模式名称,sample_pal 是过程名称

【讨论】:

以上是关于使用spring从db2数据库调用存储过程到java代码的主要内容,如果未能解决你的问题,请参考以下文章

Spring 中 SQL 的存储过程

db2如何创建存储过程

通过 JMeter 调用 DB2 存储过程时出现语法错误

使用 Spring JPA 调用存储过程

从外部 UDF 调用 db2ReadLog

用于分布式 DB2 数据库的 Spring Batch Reader