[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 TRYEND TRY 사이에는 프로시저 호출을 포함한 트랜잭션 작업이 있습니다. 예외가 발생하지 않으면 COMMIT 문이 실행되어 트랜잭션이 커밋됩니다. 그러나 예외가 발생하면 BEGIN CATCHEND CATCH 사이의 코드 블록이 실행됩니다.

IF @@TRANCOUNT > 0 조건문은 현재 실행 중인 트랜잭션이 있는지 확인합니다. 만약 트랜잭션이 있다면 ROLLBACK이 실행되어 트랜잭션을 롤백합니다. 그리고 ERROR_NUMBER()ERROR_MESSAGE() 함수를 사용하여 에러 정보를 출력합니다.

이 예제 코드를 사용하여 프로시저 호출 시 트랜잭션 롤백 처리를 구현할 수 있습니다. 이를 통해 프로시저 실행 중 발생하는 예외 상황에 대비할 수 있습니다.

참고 자료