我们都知道,在java中经常需要用到别的项目集成,那小伙伴们对jdbc调用MySQL函数知道多少呢?这次小编就带你们来看看吧。
一、
我们可以通过Connection对象的prepareCall()方法创建一个CallableStatement对象的实例。
{ ? = call < procedure - name > [(<arg1>, <arg2>, ...)]} call <procedure-name> [(<arg1>, <arg2>, ...)]}
PS:在使用Connection对象的preparedCall()方法时,注意需要传入一个String类型的字符串,该字符串用于指明如何调用存储过程。
二、
使用CallableStatement对象的registerOutParameter()方法注册OUT参数
三、
使用CallableStatement对象的setXxx()方法设定IN或IN OUT参数
若想将参数默认值设为null,可以使用setNull()方法
可以用数据字典查看存储过程或函数的定义:
select text from user_source where lower(name) = 'add_sal_procedure;'
示例:
create function sum_salary(name varchar(20), i int) returns varchar(20) begin declare result int default 0; declare r varchar(20) default 'aaa'; select count( * ) into result from t_user where username = name and i = id; select if (result > 0, '成功!', '失败!') into r; return r; end;
如上函数在idea中显示的是
create definer = root @localhost function sum_salary(name varchar(20), i int) returns varchar(20) begin declare result int default 0; declare r varchar(20) default 'aaa'; select count( * ) into result from t_user where username = name and i = id; select if (result > 0, '成功!', '失败!') into r; return r; end;
这个函数的功能是输入用户名和id,并查看是否有这个人,测试如下:
package com.litian.jdbc; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.Types; /** * @author: Li Tian * @contact: litian_cup@163.com * @software: IntelliJ IDEA * @file: TestCalllableStatement.java * @time: 2020/4/8 12:14 * @desc: |如何使用JDBC调用存储在数据库中的函数或存储过程 */ public class TestCalllableStatement { public static void main(String[] args) { Connection conn = null; CallableStatement cs = null; try { conn = JDBCTools.getDSConnection(); // 1. 通过Connection对象的prepareCall()方法创建一个CallableStatement对象的实例。 String sql = "{?= call sum_salary (?, ?)}"; cs = conn.prepareCall(sql); // 2. 通过CallableStatement对象的registerOutParameter()方法注册OUT参数 cs.registerOutParameter(1, Types.VARCHAR); // 3. 通过CallableStatement对象的setXxx()方法设定IN或IN OUT参数 cs.setString(2, "你大爷"); cs.setInt(3, 3); // 4. 执行存储过程 cs.execute(); // 5. 获取返回值 String result = cs.getString(1); System.out.println(result); } catch (Exception e) { e.printStackTrace(); } finally { JDBCTools.release(null, cs, conn); } } }
成功输出返回值!
以上就是本篇文章的所有内容,对于jdbc小伙伴们还有什么疑问呢?还想了解更多java常见问题及解决方法,就来关注本站吧。
推荐阅读: