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.