JDBC(13)—JDBC调用存储过程和函数
2017-08-03 16:17
633 查看
步骤:
JDBC调用存储过程和函数
步骤:
①:通过Connection对象的prepareCall()方法创建一个CallableStatement对象的实例,在使用Connection对象的preparedCall()方法时,需要传入一个String类型的字符串,该字符串指明如何调用存储过程。
函数: [? = call [(,, … )]]
存储过程: [call [(,, … )]]
②:通过CallableStatement对象reisterOutParameter方法注册OUT参数
③:通过CallableStatement对象setXxx()方法设定IN或IN OUT参数,若想把参数设为null,使用setNull()方法
④:通过CallableStatement对象的execute()方法执行存储过程。
⑤:如果调用的是带返回值的存储过程,还需要CallableStatement对象的getXxx()方法获取其返回值。
注:通过数据字典查看存储过程或函数的定义。
2 .示例代码
java调用存储过程
创建存储过程的SQL语句
java调用函数
创建函数的mysql语句:
JDBC调用存储过程和函数
步骤:
①:通过Connection对象的prepareCall()方法创建一个CallableStatement对象的实例,在使用Connection对象的preparedCall()方法时,需要传入一个String类型的字符串,该字符串指明如何调用存储过程。
函数: [? = call [(,, … )]]
存储过程: [call [(,, … )]]
②:通过CallableStatement对象reisterOutParameter方法注册OUT参数
③:通过CallableStatement对象setXxx()方法设定IN或IN OUT参数,若想把参数设为null,使用setNull()方法
④:通过CallableStatement对象的execute()方法执行存储过程。
⑤:如果调用的是带返回值的存储过程,还需要CallableStatement对象的getXxx()方法获取其返回值。
注:通过数据字典查看存储过程或函数的定义。
2 .示例代码
java调用存储过程
/** * 调用存储过程 */ @Test public void testCallableStatement(){ Connection conn = null; CallableStatement callablestatement = null; try { conn = TestTools.getConnection(); String sql = "{ call add0 (?, ?, ?) }"; //1.获取CallableStatement类是对象 callablestatement = conn.prepareCall(sql); //2.注册OUT参数 callablestatement.registerOutParameter(3, Types.NUMERIC); //3.通过setXxx()方法设定IN或OUT参数值 callablestatement.setInt(1, 10); callablestatement.setInt(2, 20); //4.执行存储过程 callablestatement.execute(); //5.若有返回值,需要使用getXxx()接收 int sum = callablestatement.getInt(3); System.out.println("结果:"+sum);//结果:30 } catch (Exception e) { e.printStackTrace(); }finally{ TestTools.release(callablestatement, conn); } }
创建存储过程的SQL语句
#定义有返回值的存储过程,大小写无所谓,功能:计算两个数的值 #注意:过程名不能使用add CREATE PROCEDURE add0(IN a INT,IN b INT,OUT result INT) BEGIN IF a IS NULL THEN SET a = 0; END IF; IF b IS NULL THEN SET b = 0; END IF; SET result = a + b; SELECT result AS SUM; END; #调用存储过程 call add0 (10, 20, @result); ##定义无返回值的存储过程,大小写无所谓,功能:计算两个数的值 CREATE PROCEDURE add1( a INT, b INT) BEGIN DECLARE result INT; IF a IS NULL THEN SET a = 0; END IF; IF b IS NULL THEN SET b = 0; END IF; SET result = a + b; SELECT result AS SUM; END; #调用存储过程 call add1 (10, 20);
java调用函数
/** * 调用函数 */ @Test public void testCallableStatement1(){ Connection conn = null; CallableStatement callablestatement = null; try { conn = TestTools.getConnection(); String sql = "{? = call add_fun (?, ?) }"; //1.获取CallableStatement类是对象 callablestatement = conn.prepareCall(sql); //2.注册OUT参数,其中1表示第一个问号,表示输出 callablestatement.registerOutParameter(1, Types.NUMERIC); //3.通过setXxx()方法设定IN或OUT参数值,2,3表示第二个和第三个问号,表述输入。 callablestatement.setInt(2, 10); callablestatement.setInt(3, 20); //4.执行存储过程 callablestatement.execute(); //5.若有返回值,需要使用getXxx()接收 int sum = callablestatement.getInt(1); System.out.println("结果:"+sum); } catch (Exception e) { e.printStackTrace(); }finally{ TestTools.release(callablestatement, conn); } }
创建函数的mysql语句:
#创建有返回值的函数,注意分号不要少 create function add_fun(a int, b int) returns int begin declare c int; set c = a + b; return c; end; #调用函数 select add_fun(10,10) as sum
相关文章推荐
- JDBC基于MVC架构项目实例-实现对MySQL数据表的增删改查、调用数据表中的存储过程和函数
- jdbc调用存储过程和函数
- java中使用jdbc和mybatis调用数据库中的存储过程和函数
- jdbc调用存储过程和函数
- jdbc调用存储过程和函数
- JDBC调用存储过程和函数
- jdbc调用存储过程和函数
- JDBC和JPA调用储存过程 接收存储过程有返回值
- java调用存储过程和函数
- 调用PostgreSQL存储过程,找不到函数名的问题
- java下实现调用oracle的存储过程和函数
- oracle 调用存储过程和函数返回结果集
- Java调用Oracle的存储过程、存储函数
- MySQL-调用存储过程和函数
- jdbc调用有参数输出的存储过程
- jdbc调用oracle 存储过程
- 【转】JDBC调用存储过程之实例讲解
- java下实现调用oracle的存储过程和函数
- Java中调用数据库的存储过程存储函数和包体
- 如何实现在Oracle中应用存储过程调用MatLab函数(1)