У меня есть JDBC-соединение с СУБД Oracle.
Мне нужно вызвать хранимую процедуру (назовем ее foo), которая возвращает число.
Работает нормально, если я выполняю каждое выражение для себя.
for (int i = 0; i < 10;i ++)
{
CallableStatement cst = con.prepareCall ("{? = foo (" + i + ")}");
cst.registerOutParameter (1, Types.INTEGER);
cst.execute ();
}
СЕЙЧАС мне нравится использовать пакетную обработку для повышения производительности.Это мой подход.
Statement st = con.createStatement ();
for (int i = 0; i < 10;i ++)
{
st.addBatch ("{? = foo (" + i + ")}");
}
st.executeBatch ();
Это не работает.
Ошибка говорит мне, что не каждая переменная назначена.Думаю, это потому, что для возвращаемого значения нет регистрации, как в рабочем примере выше.
Если я задаю для оператора
{foo (" + i + ")}
, чтобы удалить возвращаемое значение, тогда я получаюошибка в том, что процедура не определена.
Как я могу обработать такую хранимую процедуру с возвращаемым значением в пакетной обработке?