JDBC调用存储函数(PL/SQL)

来源:互联网 发布:微店商品导入淘宝店铺 编辑:程序博客网 时间:2024/05/29 04:49

1.简介


本文使用JDBC调用 java,sql.CallableStatement来实现



2.CallableStatement介绍


public interface CallableStatement  extends PreparedStatement
(引用API)作用:用于执行 SQL 存储过程的接口。JDBC API 提供了一个存储过程SQL转义语法,该语法允许对所有 RDBMS 使用标准方式调用存储过程。
 此转义语法有一个包含结果参数的形式和一个不包含结果参数的形式,如果使用结果参数,则必须将其注册为 OUT 参数。其他参数可用于输入、输出或同时用于二者。
参数是根据编号按顺序引用的,第一个参数的编号是 1
{?= call <procedure-name>[(<arg1>,<arg2>, ...)]}   {call <procedure-name>[(<arg1>,<arg2>, ...)]}
3.上代码前介绍:
3.1.环境:
数据库Oracle
3.上代码:存储函数的代码:
create or replace function add_(v_add1 number,v_add2 number)return numberis       v_sum number(3);begin       v_sum := v_add1 +v_add2;       return v_sum;end;
Java代码:
package cn.jdbc;import java.sql.CallableStatement;import java.sql.Connection;import java.sql.SQLException;import java.sql.Types;import org.junit.Test;import cn.jdbc_tools.JDBCTools;/** * CallableStatementDemo基本使用演示 * @author _jon * */public class CallableStatementDemo {@Testpublic void fun(){//求两个数之和的存储函数add_callableStatementfun();}private void callableStatementfun() {//加载驱动//1.得到连接Connection conn =null;CallableStatement callableStatement = null;try{conn = JDBCTools.getOracleConnection();String sql="{?=call add_(?,?)}";//带返回值的是存储函数,没有的是存储过程//2.得到callableStatementcallableStatement = conn.prepareCall(sql);//3.注册OUT参数callableStatement.registerOutParameter(1, Types.NUMERIC);//callableStatement.registerOutParameter(2, Types.NUMERIC);//callableStatement.registerOutParameter(3, Types.NUMERIC);//4.传入的参数:callableStatement.setInt(2, 2);callableStatement.setInt(3, 7);//4.执行callableStatement.execute();//5.得到返回值int sum = callableStatement.getInt(1);System.out.println(sum);}catch(SQLException e){e.printStackTrace();} catch (Exception e) {e.printStackTrace();}finally{JDBCTools.close(null,callableStatement,conn);}}}
关于out参数:如果有返回值,那么返回值是out类型,所以要注册callableStatement.registerOutParameter(...);如果是普通参数类型直接调用callableStatement.setInt(...);传参数就可以

1 0
原创粉丝点击