使用Spring的JdbcTemplate调用Oracle的存储过程
Spring的SimpleJdbcTemplate将存储过程的调用进行了良好的封装,但可惜只能用于jdk1.5的环境,无法再jdk1.4环境下使用,而JdbcTemplate则完全适用于jdk1.4下的环境,下面列出使用JdbcTemplate调用Oracle存储过程的一些方法:
一) 无返回值的存储过程调用
存储过程: ?
CREATE OR REPLACE PROCEDURE TESTPRO(PARAM1 IN VARCHAR2,PARAM2 IN VARCHAR2) AS
BEGIN
?? ?INSERT INTO TESTTABLE (ID,NAME) VALUES (PARAM1, PARAM2);
END TESTPRO;
Java代码: ??
package com.dragon.test;
import org.springframework.jdbc.core.JdbcTemplate;
public class JdbcTemplateTest {
? private JdbcTemplate jdbcTemplate;
? public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
? this.jdbcTemplate = jdbcTemplate;
? }
? public void test(){
? ?? this.jdbcTemplate.execute("call testpro('p1','p2')");
? }
}
注:存储过程TESTPRO中用到了表TESTTABLE(ID, NAME),需事先建好.
二)有返回值的存储过程(非结果集) ??
存储过程: ??
CREATE OR REPLACE PROCEDURE TESTPRO(PARAM1 IN VARCHAR2,PARAM2 OUT VARCHAR2) AS ??
BEGIN ? ?
?? ?SELECT INTO PARAM2 FROM TESTTABLE WHERE ID= PARAM1; ? ?
END TESTPRO;
Java代码:
public void test() {
? String param2Value = (String) jdbcTemplate.execute(
? ?? new CallableStatementCreator() {
? ?? ?? public CallableStatement createCallableStatement(Connection con) throws SQLException {
? ?? ?? ?? String storedProc = "{call testpro(?,?)}";// 调用的sql
? ?? ?? ?? CallableStatement cs = con.prepareCall(storedProc);
? ?? ?? ?? cs.setString(1, "p1");// 设置输入参数的值
? ?? ?? ?? cs.registerOutParameter(2, OracleTypes.VARCHAR);// 注册输出参数的类型
? ?? ?? ??
免责声明: 本文仅代表作者个人观点,与爱易网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。