最近要学习数据库,在用JDBC调用存储过程和存储函数是出现了小麻烦。在MYSQL中,用JDBC调用存储过程和存储函数还是有一些不同的。
一,用JDBC调用存储过程一般过程如下:
String sql = "call proc(?,?)";
CallableStatement cstmt = con.prepareCall(sql); //预处理
cstmt.setString(1, in); //设置输入参数
cstmt.registerOutParameter(2,Types.INTEGER); //设置输出参数
cstmt.execute(); //执行
二,用JDBC调用存储函数
由于MYSQL的存储函数没有输出参数,只有返回值,用上面的方法去调用存储函数时会报错,我用下面的方法获取返回参数
String sql = "Select fun(?)";
CallableStatement cstmt = con.prepareCall(sql); //预处理
cstmt.setString(1, in); //设置输入参数
cstmt.execute(); //执行
ResultSet rs=cstmt.getResultSet(); //通过结果集获取存储函数的返回参数
while(rs.next()){
System.out.println(rs.getObject(1));
}