본문 바로가기

데이터베이스

Sql Server RAISERROR 2부

RAISERROR ( { message_id | message_text | @local_variable }  
    { ,severity ,state }  
    [ ,argument [ ,...n ] ] )  
    [ WITH option [ ,...n ] ];

 

이번에는 message_text를 이용하여 RAISERROR를 사용해보겠다.

 

message_text는 2,047문자까지 저장 가능하며 마지막 3문자 '...'로 예약되어 있으니 주의해야 한다. 만약 그래서 2,048개나 그 이상의 문자들로 이루어진 텍스트를 message_text에 할당한다면 일부가 삭제되고 마지막은 ...으로 채워져 있을 것이다. 

 

그리고 message_text를 RAISERROR에 사용하면 message_id는 50,000으로 세팅이 된다. 

 

아래 예를 보자.

 

RAISERROR('My Error Message', 1, 1);

 

결과는 이렇다.

 

My Error Message
메시지 50000, 수준 1, 상태 1

 

Severity 

 

얼마나 이 Error가 심각한지를 나타내는 정도이다. 정수로 0부터 25까지 값을 가질 수 있다. 각각의 정도가 심각함의 정도를 나타낸다. 

 

0~10은 Informational messages 수준으로 심각도가 낮은 수준이다.

11~18은 Errors 수준으로 심각도가 중간 정도이다.

19~25는 Fatal error 수준으로 심각도가 크다.

 

state

 

0부터 255까지의 상태값이 할당된다. 만약 하나의 같은 사용자 정의 에러 메시지를 여러 곳에서 발생시킨다고 하자. 어딘가에서 에러 메시자가 발생할 것이고 그 곳이 어디인지 좀 더 쉽게 찾을 수 있도록 뭔가 특별한 숫자를 부여하고 싶을때 state에 그 숫자를 세팅하면 된다. 

 

WITH OPTION 

 

LOG, NOWAIT, SETERROR가 옵션이 될 수 있다. 

WITH LOG는 SQL Server Database Engine에 대한 에러를 error log와 응용프로그램 log에 기록한다.

WITH NOWAIT는 에러 메시지를 사용자에게 즉시 전송한다.

WITH SETERROR는 심각도(Severity)에 상관없이 ERROR_NUMBER와 @ERROR값들을 message_id나 50000으로 세팅한다. 

 

원문출처 https://www.sqlservertutorial.net/sql-server-stored-procedures/sql-server-raiserror/

'데이터베이스' 카테고리의 다른 글

Clustered Index  (0) 2020.05.29
Convert 함수를 이용한 날짜 및 시간 스타일 변환  (0) 2020.05.28
SQL Server RAISERROR 1부  (0) 2020.05.25
함수와 저장프로시져의 차이  (0) 2020.05.24
SQL 세션이란  (0) 2020.05.23