SQL Server 에서 RAISERROR 의 용법 에 대한 상세 한 소개

5391 단어 SQLServerRAISERROR
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

읽 어 주 셔 서 감사합니다. 여러분 에 게 도움 이 되 기 를 바 랍 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기