最近要学习数据库,在用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));
			}