2010-08-05 5 views
0

T-SQL에서 트랜잭션을 ROLLBACK 한 후 코드 실행을 중지 할 수 있습니까? 예를 들어, 아래의 코드에서 'Message 1'을 인쇄하려고하지만 'Message 2'는 인쇄하지 마십시오. 그것은 SP 또는 유사에 있다면SQL 트랜잭션 ROLLBACK을 실행할 때 실행 중지

BEGIN TRANSACTION 
GO 
PRINT 'Message 1' 
ROLLBACK TRANSACTION 
GO 
PRINT 'Message 2' 
GO 

답변

5

을 사용할 수 있으며,이 경우에도 첫 번째 오류가있는 경우, 다음 배치가 실행된다는 것을 의미합니다. 나는 당신이 오류를 범하면 당신이 우회하려고한다는 것을 가정하고있다.

GOTO에서 오류 처리 블록을 볼 수 있습니다. 아니면 RETURN 일 수도 있습니다. 그러나,이 같은 GO 블록 내에서 할 필요가

예 :

GO 
    return 
    SELECT 'Test 1' 
GO 
    SELECT 'Test 2' 
GO 

아직 시험이 반환하지만, 당신이 할 수 있었던 GO 키워드에 대한 마이크의 문에 또한 1

0

, 당신은 GO 문은 일괄 분리되어 RETURN에게

3

을 테스트하지 않습니다 이 같은 것을 시도하십시오

BEGIN TRY 
Begin Transaction 
    print 'Message1' 
    Select 1/0 --throws error 
Commit Transaction 
print 'Message2' 
END TRY 
BEGIN CATCH 
rollback transaction 
END CATCH 
관련 문제