import java.sql.*;public class TestCall {
public static void main(String[] args) {

Connection conn = null;
CallableStatement csmt = null;

try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.66.160:1521:XE", "system", "tigger");
csmt = conn.prepareCall("{call p(?, ?, ?, ?)}");

csmt.registerOutParameter(3, Types.INTEGER);
csmt.registerOutParameter(4, Types.INTEGER);
csmt.setInt(1, 3);
csmt.setInt(2, 4);
csmt.setInt(4, 5);

System.out.println(csmt.getInt(3));//第二十行
System.out.println(csmt.getInt(4));

} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if(csmt != null) {
csmt.close();
csmt = null;
}
if(conn != null) {
conn.close();
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
Exception in thread "main" java.lang.NullPointerException
at oracle.jdbc.driver.OracleCallableStatement.getInt(OracleCallableStatement.java:1026)
at TestCall.main(TestCall.java:20)
存储过程:create or replace procedure p
     (v_a in number, v_b number, v_ret out number, v_temp in out number)
is
begin
   if (v_a > v_b) then
      v_ret := v_a;
   else
      v_ret := v_b;
   end if;
   v_temp := v_temp + 1;
end;