У меня есть Java-программа, которая вызывает хранимую процедуру MySQL, которая откатывается, когда она получает SQLEXCEPTION
. Когда я добавил откат (обработчик выхода) в хранимую процедуру, программа Java перестала получать исключение SQL.Как распространять исключения MySQL в программе Java?
Как я могу убедиться, что сообщение об ошибке SQL и сообщение об ошибке MySQL передаются обратно в программу Java?
Вот моя процедура магазин:
DELIMITER $$
DROP PROCEDURE IF EXISTS up_OMS_insertParticipantOmsOrderOwner $$
CREATE PROCEDURE up_OMS_insertParticipantOmsOrderOwner(
IN PID int,
IN OwnerName varchar(50),
IN DisplayName varchar(50),
IN Enabled tinyint(1))
BEGIN
declare exit handler for SQLException
BEGIN
rollback;
END;
start transaction;
if (DisplayName<>'') then
insert OmsOrderOwner (ParticipantID, OmsOrderOwnerName, DisplayName, Enabled)
value (PID, OwnerName,DisplayName, Enabled);
else
insert OmsOrderOwner(ParticipantID, OmsOrderOwnerName, DisplayName, Enabled)
value (PID, OwnerName,null, Enabled);
end if;
set @OwnerID := @@identity;
insert UserOmsOrderOwnerSubscription (UserID, ParticipantID, OmsOrderOwnerID, Enabled)
select
userOrderSub.UserId, PID, @OwnerID, 1
from
Users u,
UserOmsOrderSubscription userOrderSub
where
userOrderSub.UserID = u.UserID and
u.ParticipantID = PID;
commit;
END $$
DELIMITER ;
Да, мы можем переместить фиксацию и откат в нашем Java-коде. к сожалению, мы не сможем сделать это в ближайшей перспективе. Также, к сожалению, мы находимся на версии 5.0x mysql, поэтому resignal не работает. Я могу написать signalFunct самостоятельно, но я не получу сообщение об ошибке mysql. – richs