#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, то он должен выполняться синхронно.