public void testCallableStatement(){
Connection connection = null;
//使用 Statement 的另一个子接口 CallableStatement
CallableStatement callableStatement = null;
try {
connection = JDBCTools.getConnection();
// String sql = "{?= call hof2(?)}";//函数hof1:传入员工姓名,返回其对应工资
String sql = "{call myp1(?,?)}";//存储过程myp1:传入女神姓名,返回其男朋友姓名
//1.通过 connection 对象的 prepareCall()方法创建一个 cs 对象的实例,并传入SQL语句调用存储过程或函数
callableStatement = connection.prepareCall(sql);
//2.注册 OUT 参数:设置第二个占位符的输出类型为 varchar
callableStatement.registerOutParameter(2, Types.VARCHAR);
//3.通过 cs 对象的 setXxx() 方法设定 IN 或 INOUT 的值,若为null,可以使用 setNull() 方法
callableStatement.setString(1, "赵敏");
//4.通过 cs 对象的 execute() 方法执行存储过程
callableStatement.execute();
//5.若结果有返回值,则通过 cs 对象的 getXxx() 方法获取其返回值----->得到第二个占位符的值
String name = callableStatement.getString(2);
System.out.println(name);
} catch (Exception e) {
e.printStackTrace();
} finally {
JDBCTools.release(null, callableStatement, connection);
}
}
通过 Java 程序调用存储过程或函数
最新推荐文章于 2023-07-03 09:55:55 发布