[sql] 프로시저 호출 시 트랜잭션 롤백 처리 방법
프로시저는 SQL에서 일련의 작업을 수행하는 데 사용되는 코드의 집합입니다. 이때 프로시저를 호출하는 도중 오류가 발생할 수 있습니다. 이러한 상황에서 트랜잭션의 롤백 처리는 매우 중요합니다. 롤백은 이전에 수행한 작업을 취소하고 이전 상태로 돌아가는 작업입니다. 이 방법을 사용하여 트랜잭션 중간에 발생한 오류를 처리할 수 있습니다.
아래는 SQL에서 프로시저 호출 시 트랜잭션 롤백 처리를 위한 예제 코드입니다.
BEGIN TRY
BEGIN TRANSACTION;
-- 프로시저 호출
EXEC my_procedure;
COMMIT;
END TRY
BEGIN CATCH
-- 롤백 처리
IF @@TRANCOUNT > 0
ROLLBACK;
-- 에러 메시지 출력
SELECT ERROR_NUMBER() AS ErrorNumber, ERROR_MESSAGE() AS ErrorMessage;
END CATCH;
위의 코드에서 BEGIN TRY와 END TRY 사이에는 프로시저 호출을 포함한 트랜잭션 작업이 있습니다. 예외가 발생하지 않으면 COMMIT 문이 실행되어 트랜잭션이 커밋됩니다. 그러나 예외가 발생하면 BEGIN CATCH와 END CATCH 사이의 코드 블록이 실행됩니다.
IF @@TRANCOUNT > 0 조건문은 현재 실행 중인 트랜잭션이 있는지 확인합니다. 만약 트랜잭션이 있다면 ROLLBACK이 실행되어 트랜잭션을 롤백합니다. 그리고 ERROR_NUMBER()와 ERROR_MESSAGE() 함수를 사용하여 에러 정보를 출력합니다.
이 예제 코드를 사용하여 프로시저 호출 시 트랜잭션 롤백 처리를 구현할 수 있습니다. 이를 통해 프로시저 실행 중 발생하는 예외 상황에 대비할 수 있습니다.