JDBC调用函数,存储过程
/** * 如何使用JDBC调用存储在数据库中的函数或存储过程 */ @Test public void testCallableStatement(){ Connection connection = null; CallableStatement callableStatement = null; try { connection = Methods.getConnection(); //1.通过Connecton对象的prepareCall() //方法创建一个CallableStatement对象的实例, //在使用Connection对象的preparedCall()方法时, //需要传入一个String类型的字符串,该字符串用于指明如何调用存储过程 //procedure-name:函数名 //arg:函数的参数 String sql = "{?=call <procedure-name>[(<arg1>,<arg2>,...)]}"; callableStatement = connection.prepareCall(sql); //2.通过CallableStatement对象的 //reisterOutParamter()方法注册OUT参数 callableStatement.registerOutParameter(1, Types.NUMERIC); callableStatement.registerOutParameter(3, Types.NUMERIC); //3.通过CallableStatement对象的setXxx()方法设定IN或IN OUT参数的值 //null 可以使用setNull()方法 callableStatement.setInt(2,80); //4.通过CallableStatement 对象execute()方法执行存储过程 callableStatement.execute(); //5.如果所谓用的是带返回参数的存储过程 //还需要通过CallableStatement对象的getXxx()方法获取其返回值 double sumSalary = callableStatement.getDouble(1); long empCount = callableStatement.getLong(3); } catch (Exception e) { e.printStackTrace(); } finally { Methods.release(null,connection,null); } }