使用到java.sql.CallableStatement接口,该接口专门用来调用存储过程;
该对象的获得依赖于java.sql.Connection;
通过Connection实例的prepareCall()方法返回CallableStatement对象
prepareCall()内部为一固定写法{call 存储过程名(参数列表1,参数列表2)}可用?占位
eg: connection.prepareCall("{call proc_employee(?)}");
存储过程中参数处理:
输入参数:通过java.sql.CallableStatement实例的setXXX()方法赋值,用法等同于java.sql.PreparedStatement
输出参数:通过java.sql.CallableStatement实例的registerOutParameter(参数位置, 参数类型)方法赋值,其中参数类型主要使用java.sql.Types中定义的类型
Java代码调用带输入参数的存储过程 (根据输入ID查询雇员信息)
publicvoid executeProcedure()
{
try {
/**
*callableStatementjava.sql.CallableStatement
*connectionjava.sql.Connection
*jdbc调用存储过程原型
*{call存储过程名(参数列表1,参数列表2)}可用?代替
*/
callableStatement=connection.prepareCall("{call proc_employee_findById(?)}");
callableStatement.setInt(1, 1); //设置输入参数
resultSet=callableStatement.executeQuery();//执行存储过程
if(resultSet.next())
{
System.out.println(resultSet.getInt(1)+""t"+resultSet.getString(2));
}
} catch (SQLException e) {
e.printStackTrace();
}
}