2012-04-13 13 views
0

설명서를 읽었을 때 예외가 발생하면 @@ Error 전역 변수가 설정됩니다. 예 : 외래 키 위반 등.@@ Error가 설정된 경우 예외가 발생합니까?

Create Procedure someName 
Begin 

    Insert Into something... 
    return @@Error 

End 

내가 복귀 실행 @@Error 것입니다 예외가 발생할 때 알고 싶은 :

이의 내가 샘플 절차 있다고 가정 해 봅시다? 또는 내블록 내 C# 코드 블록에 올 것인가? @@Error은 정말 나를 혼란스럽게합니다. 외래 키 위반시 오류가 발생하지 않으면 Sql Server에서 Try Catch를 사용하는 이유는 무엇입니까?

+2

글을 읽을 가치가 충분합니다. http://www.sommarskog.se/error-handling-I.html – AdaTheDev

답변

0

예, T-SQL에서는 오류가 실행을 종료하지 않습니다. Try-catch는 최신 버전에서 추가되었으므로 오류를보다 잘 처리 할 수 ​​있습니다.

+0

그래서 시작하고 끝내기 시작하고 끝내려고 시도하고 시작합니다. 끝까지 잡으십시오. Error가 Throw되면 컨트롤은 catch 블록에 도달하지 않고 오류가 발생한 후 다음 블록으로 계속 실행됩니까? – Jack

+0

사실, _can_ 실행을 종료하고, try/catch 블록을 무시하고, 심각한 정도의 경우 연결을 종료 할 수도 있습니다. RAISERROR 명령에 대한 문서를 참조하십시오. [here.] (http://msdn.microsoft.com/en-us/library/ms178592.aspx) – Bridge

+0

@Bridge, 그는 NOT NULL 필드에 null. Raiserror는 명시 적으로 실행을 종료합니다. – kristianp

관련 문제