Java Academy Logo

Java Academy

JDBC CallableStatement

CallableStatement extends PreparedStatement to call stored procedures and functions defined in the database, useful for complex business logic maintained in the DB layer.

Calling a Stored Procedure

String sql = "{call get_customer_orders(?, ?)}";
CallableStatement cs = conn.prepareCall(sql);
cs.setInt(1, customerId);       // IN parameter
cs.registerOutParameter(2, Types.INTEGER); // OUT parameter
cs.execute();
int orderCount = cs.getInt(2);

When to Use Stored Procedures

  • Complex multi-step operations already defined in the database.
  • Legacy enterprise systems with business logic in PL/SQL or T-SQL.
  • Performance-critical batch operations close to data.
  • Prefer application-layer logic in modern microservices unless DB team owns procedures.

Frequently Asked Questions

CallableStatement vs PreparedStatement?

Use PreparedStatement for standard SQL. Use CallableStatement specifically for stored procedure calls with {call proc_name(?,?)} syntax.

Continue Learning