У меня есть две сторонние хранимые процедуры, которые я вызываю в транзакции Spring следующим образом:
@Transactional
public void testGetHoldings() throws SQLException {
// calls stored procedure get_session
myRepo.getSession(login.getUser(), login.getPassword());
// calls stored procedure get_data
myRepo.getData("aDataId");
}
Требуется транзакция b / c первая хранимая процедура генерирует ключ сеанса. Ключ сеанса может использоваться только другим вызовом sp (таким как get_data) в той же транзакции. Кроме того, каждый оператор в хранимой процедуре get_data должен быть зафиксирован после выполнения. Например,
ALTER procedure [dbo].[get_data]
@aDataId varchar(max)
as
begin
-- just an example insert. actual sp has a lot of code and several inserts that
-- must be committed immediately upon execution
insert into tbl (col1) values ("col1")
end
Однако @Transactional
заставляет каждую вставку ждать, пока sp завершится, прежде чем будет зафиксирован.
Как я могу иметь две хранимые процедуры в одной транзакции, но разрешить фиксацию операторов в хранимых процедурах при выполнении оператора (т.е. автоматическое принятие)? Сторонние SP находятся на SQL сервере.