본문 바로가기
프로그래밍/TSQL

[MSSQL]EXECUTE 후 트랜잭션 개수는 BEGIN 및 COMMIT 문 수가 일치하지 않음을 나타냅니다

by 정리 습관(★arranging★) 2023. 7. 20.
728x90

sp 처리 중에 TRY CATCH 문과 트랜잭션 처리를 제대로 했는데 아래와 같은 메시지가 발생하여 여러 원인을 찾아봤습니다.


"EXECUTE 후 트랜잭션 개수는 BEGIN 및 COMMIT 문 수가 일치하지 않음을 나타냅니다"

 

구문내에 RETURN 에 대한 점검! 필요 특히 CURSOR 순회중엔 BREAK;하자

1. SET XACT_ABORT ON; 를 상단에 기재하여 정확한 원인 현상을 찾은 방법
--> 테이블이 없거나, 구문요류 등 상황에서는 도움이 되지만 나의 경우는 도움이 되지 않았음


2. 구문내에 RETURN 에 대한 점검!
--> 구문 중간에 RETRUN; 이 들어가 있었다.. 왠지 느낌상 CURSOR 돌다가 RETURN 을 만나면 이상하게 동작할 것 같고
예전에 FUNCTION 내에 FUNCTION 처리 할때는 중간 RETURN 하면 안된다는 부분이 기억나서, 해당 부분을 BREAK로 바꿔봤다.

결과는 성공.

During sp processing, the TRY CATCH statement and transaction processing were done correctly, but the following message occurred, so I searched for various causes.

"The number of transactions after EXECUTE indicates that the number of BEGIN and COMMIT statements does not match"

Check for RETURN in the syntax! NECESSITY, ESPECIALLY FOR CURSOR CIRCUITS, LET'S BREAK
1. SET XACT_ABORT ON; at the top to find the exact cause of the phenomenon
--> helpful in situations such as not having a table, or phrase fluctuations, but not in my case.

2. Check for RETURN in the syntax!
--RETRUN in the middle of the > syntax; It was in. For some reason, it seems that if you go around the cursor and meet RETURN, it will behave strangely.
In the past, I remembered that when processing a function within a FUNCTION, I couldn't make an intermediate return, so I changed that part to BREAK.
Problem solved!

댓글