一、code fragment
CallableStatement cs =null;
try {
cs = conn.prepareCall("{call detector_plsql_exception(?,?,?,?)}");
cs.setString(1, "31");
cs.registerOutParameter(2, Types.VARCHAR);
cs.registerOutParameter(3, Types.VARCHAR);
cs.registerOutParameter(4, Types.VARCHAR);
cs.execute();
String v_dname = cs.getString(2);
String v_code = cs.getString(3);
String v_msg = cs.getString(4);
System.out.println("v_dname:"+v_dname+",v_code:"+v_code+",v_msg:"+v_msg);
} catch (SQLException e) {
e.printStackTrace();
} finally{
try{
if(cs != null)
cs.close();
cs = null;
}catch(Exception e){
}
try{
if(conn != null)
conn.close();
conn = null;
}catch(Exception e){
}
}
Note:其中存储过程中有模式为OUT参数时,在执行存储过程之前,必须先注册OUT参数的类型:
cs.registerOutParameter(2, Types.VARCHAR);
cs.registerOutParameter(3, Types.VARCHAR);
cs.registerOutParameter(4, Types.VARCHAR);
..