나는 SQLEXCEPTION
이되면 롤백되는 MySQL 저장 프로 시저를 호출하는 Java 프로그램을 가지고 있습니다. 저장 프로 시저에 롤백 (종료 핸들러)을 추가하면 Java 프로그램이 SQL 예외를 중지합니다.Java 프로그램에 MySQL 예외를 전파하는 방법은 무엇입니까?
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