Gymterview
middle

Как вызвать хранимую процедуру

Хранимая процедура — это именованный набор SQL-операторов, хранящийся на сервере базы данных и вызываемый из Java через интерфейсы Statement.

Выбор интерфейса зависит от характеристик хранимой процедуры:

  • без параметров — Statement
  • с входными параметрами — PreparedStatement
  • с входными и выходными параметрами — CallableStatement

Для получения информации о хранимой процедуре (имена и типы параметров) можно использовать методы java.sql.DatabaseMetaData.

Пример вызова хранимой процедуры с входными и выходными параметрами
public void runStoredProcedure(final Connection connection) throws Exception {
    // описываем хранимую процедуру
    String procedure = "{ call procedureExample(?, ?, ?) }";

    // подготавливаем запрос
    CallableStatement cs = connection.prepareCall(procedure);

    // устанавливаем входные параметры
    cs.setString(1, "abcd");
    cs.setBoolean(2, true);
    cs.setInt(3, 10);

    // описываем выходные параметры
    cs.registerOutParameter(1, java.sql.Types.VARCHAR);
    cs.registerOutParameter(2, java.sql.Types.INTEGER);

    // запускаем выполнение хранимой процедуры
    cs.execute();

    // получаем результаты
    String parameter1 = cs.getString(1);
    int parameter2 = cs.getInt(2);

    // заканчиваем работу с запросом
    cs.close();
}

На собеседовании: назовите CallableStatement и синтаксис вызова { call procedureName(?, ?) }. Упомяните registerOutParameter() для выходных параметров. На практике хранимые процедуры в Java-проектах встречаются редко — чаще используются в legacy-системах или при интеграции с Oracle.