Синхронное выполнение хранимой процедуры

#java #asynchronous #stored-procedures #jdbc

#java #асинхронный #хранимые процедуры #jdbc

Вопрос:

У меня есть следующий код:

 connection = makeConnection();
CallableStatement callableStatement = connection.prepareCall("{call dbo.delete_orders(?) }");
callableStatement.setString(1, userName);
callableStatement.execute();
callableStatement.close();
  

Пожалуйста, помогите мне понять, как я могу гарантировать, что после выполнения последней строки выполнение хранимой процедуры будет завершено или она выполняется асинхронно.

Комментарии:

1. Пожалуйста, покажите код этой хранимой процедуры. Точное поведение может зависеть от того, что делает хранимая процедура. Например, если эта хранимая процедура сначала выбирает из таблицы (возвращая эту таблицу), а затем выполняет удаление, то эта операция удаления может не произойти, если строки действительно не будут прочитаны (я не уверен, так ли это для SQL Server или нет).

Ответ №1:

JDBC не поддерживает асинхронные выполнения.

Но, с другой стороны, JDBC также не указывает, что вызов (некоторые из его методов, такие как execute() ) блокируется. Это означает, что вы можете получить (первые) результаты из базы данных, пока она все еще выполняет запрос в фоновом режиме.

Но это зависит от реализации JDBC драйвера и самой базы данных.

Ответ №2:

JDBC не поддерживает асинхронные выполнения. Если это чистый JDBC, то он должен выполняться синхронно.