SQL Server 에서 RAISERROR 의 용법 에 대한 상세 한 소개
raisorror 의 역할:raisorror 는 오 류 를 던 지 는 데 사 용 됩 니 다.[다음 자 료 는 sql server 2005 의 도움 에서 유래 합 니 다]
그 문법 은 다음 과 같다.
RAISERROR ( { msg_id | msg_str | @local_variable }
{ ,severity ,state }
[ ,argument [ ,...n ] ]
)
[ WITH option [ ,...n ] ]
간략하게 설명 하 다.첫 번 째 인자:{msgid | msg_str | @local_variable }
msg_id:sys.messages 표 에서 정의 할 수 있 는 메시지 번호 입 니 다.
sp 사용ddmessage 가 sys.messages 디 렉 터 리 보기에 저 장 된 사용자 정의 오류 메시지 번호 입 니 다.
사용자 정의 오류 메시지 의 오류 번 호 는 50000 이상 이 어야 합 니 다.
msg_str:사용자 정의 메시지 일 수도 있 습 니 다.이 오류 메 시 지 는 최대 2047 글자 가 될 수 있 습 니 다.
(상수 라면 N'xxxx'를 사용 하 십시오.nvarchar 이기 때 문 입 니 다)
지정 msgstr 시 RAISERROR 는 오류 번호 가 5000 이라는 오류 메 시 지 를 일 으 킬 것 입 니 다.
@local_variable:msgstr 방식 의 포맷 문자열 변수 입 니 다.
두 번 째 인자:severity
사용자 가 정의 한 이 메시지 와 관련 된 심각 한 단계 입 니 다.(이것 은 매우 중요 하 다)
모든 사용 자 는 0 에서 18 사이 의 심각 한 단 계 를 지정 할 수 있다.
[0,10]의 폐 구간 내 에 catch 까지 뛰 지 않 습 니 다.
[11,19]라면 catch 로 뛰 기;
만약[20,무한)이 라면 데이터베이스 연결 을 직접 종료 합 니 다.
세 번 째 인자:state
여러 위치 에서 같은 사용자 정의 오 류 를 일 으 키 면,
모든 위치 에 유일한 상태 번 호 를 사용 하면 오 류 를 일 으 키 는 코드 세그먼트 를 찾 는 데 도움 이 된다.
1 에서 127 사이 의 임의의 정수.state 기본 값 1)
state 값 이 0 또는 127 이상 이면 오류 가 발생 합 니 다!
네 번 째 인자:argument
msg 대신 사용str 또는 msg 에 대응id 메시지 에서 정 의 된 변수의 인자 입 니 다.
다섯 번 째 인자:option
잘못된 사용자 정의 옵션 입 니 다.다음 표 의 값 일 수 있 습 니 다.
LOG:오류 로그 와 프로그램 로그 에 오 류 를 기록 합 니 다.
NOWAIT:클 라 이언 트 에 메 시 지 를 즉시 보 냅 니 다.
SETERROR:@ERROR 값 과 ERRORNUMBER 값 을 msg 로 설정id 또는 50000;
[SQL]코드 예시
--예시 1
DECLARE @raiseErrorCode nvarchar(50)
SET @raiseErrorCode = CONVERT(nvarchar(50), YOUR UNIQUEIDENTIFIER KEY)
RAISERROR('%s INVALID ID. There is no record in table',16,1, @raiseErrorCode)
--예시 2
RAISERROR (
N'This is message %s %d.', -- Message text,
10, -- Severity,
1, -- State,
N'number', -- First argument.
5 -- Second argument.
);
-- The message text returned is: This is message number 5.
GO
--예시 3
RAISERROR (N'<<%*.*s>>', -- Message text.
10, -- Severity,
1, -- State,
7, -- First argument used for width.
3, -- Second argument used for precision.
N'abcde'); -- Third argument supplies the string.
-- The message text returned is: << abc>>.
GO
--예시 4
RAISERROR (N'<<%7.3s>>', -- Message text.
10, -- Severity,
1, -- State,
N'abcde'); -- First argument supplies the string.
-- The message text returned is: << abc>>.
GO
--예시 5 --A.CATCH 블록 에서 오류 메 시 지 를 되 돌려 준다
다음 코드 예제 에 서 는 TRY 블록 에서 RAISERROR 을 사용 하여 연 결 된 CATCH 블록 으로 이동 하 는 방법 을 보 여 줍 니 다.
CATCH 블록 을 호출 하 는 잘못된 정 보 를 RAISERROR 로 되 돌려 주 는 방법 도 보 여 줍 니 다.
BEGIN TRY
RAISERROR ('Error raised in TRY block.', -- Message text.
16, -- Severity.
1 -- State.
);
END TRY
BEGIN CATCH
DECLARE @ErrorMessage NVARCHAR(4000);
DECLARE @ErrorSeverity INT;
DECLARE @ErrorState INT;
SELECT
@ErrorMessage = ERROR_MESSAGE(),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE();
RAISERROR (@ErrorMessage, -- Message text.
@ErrorSeverity, -- Severity.
@ErrorState -- State.
);
END CATCH;
--예시 6--B.sys.messages 에 즉석 메시지 만 들 기
sys.messages 디 렉 터 리 보기에 저 장 된 메 시 지 를 보 여 줍 니 다.
이 소식 은 sp 를 통 해addmessage 시스템 저장 과정 은 메시지 번호 500005 로 sys.messages 디 렉 터 리 보기에 추 가 됩 니 다.
sp_addmessage @msgnum = 50005,
@severity = 10,
@msgtext = N'<<%7.3s>>';
GO
RAISERROR (50005, -- Message id.
10, -- Severity,
1, -- State,
N'abcde'); -- First argument supplies the string.
-- The message text returned is: << abc>>.
GO
sp_dropmessage @msgnum = 50005;
GO
--예시 7--C.부분 변수 로 메시지 텍스트 제공
다음 코드 예 시 는 국부 변 수 를 사용 하여 RAISERROR 문장 에 메시지 텍스트 를 제공 하 는 방법 을 보 여 줍 니 다.
sp_addmessage @msgnum = 50005,
@severity = 10,
@msgtext = N'<<%7.3s>>';
GO
RAISERROR (50005, -- Message id.
10, -- Severity,
1, -- State,
N'abcde'); -- First argument supplies the string.
-- The message text returned is: << abc>>.
GO
sp_dropmessage @msgnum = 50005;
GO
읽 어 주 셔 서 감사합니다. 여러분 에 게 도움 이 되 기 를 바 랍 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Redash를 사용할 때 몰랐던 SQL을 쓰는 법을 배웠습니다.최근 redash에서 sql을 쓸 기회가 많고, 이런 쓰는 방법이 있었는지와 sql에 대해 공부를 다시하고 있기 때문에 배운 것을 여기에 씁니다. Redash란? 월별로 데이터를 표시하고 싶습니다 주별로 데이터를 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.