예외처리

Hyuntae Jung·2022년 7월 26일
0

MS SQL

목록 보기
26/41
post-thumbnail

1. GOTO

: 지정한 위치로 무조건 이동시키는 명령문

DECLARE @i INT =1, @sum INT = 0

WHILE (@i <=100)
BEGIN
	IF(@i % 3 =0) -- %연산자는 나머지 연산자, 와일드 문자가 아니다
		BEGIN
			PRINT '3의배수 : ' + CAST(@i AS CHAR(3))
			SET @i += 1
			CONTINUE
		END

     SET @sum += @i
	 IF(@sum > 10) GOTO aa
	 SET @i += 1
END

aa:
PRINT '합계 : ' + CAST(@sum AS CHAR(10))

2. WAITFOR

: 코드의 실행을 멈추는 기능을 한다.

  • WAITFOR TIME
  • WAITFOR DELAY
BEGIN 
	-- waitfor time '22:26';
	WAITFOR DELAY '00:00:03';
	PRINT '3초간 일시 정지후 실행합니다...';
END

3. 예외 처리

BEGIN TRY
	SQL 명령...
END TRY
BEGIN CATCH
	오류시 실행될 명령..
END CATCH
BEGIN TRY
	INSERT department VALUES(20, '총무부', '경기');
	PRINT '정상 처리 되었습니다...'
END TRY

BEGIN CATCH
	PRINT '데이터 입력시 오류 발생'
	PRINT '오류번호: '
	PRINT error_number()
	PRINT '오류 메세지: '
	PRINT error_message()
	PRINT '오류 발생 라인: '
	PRINT error_line()
END CATCH

오류 발생시 메세지 나온다.

4. 오류 발생시 사용할 함수 제공

  • .ERROR_NUMBER() : 오류번호
  • .ERROR_MESSAGE() : 오류 메시지
  • .ERROR_SEVERITY() : 오류 심각성
  • .ERROR_STATE() : 오류 상태
  • .ERROR_LINE() : 오류 발생 라인
  • .ERROR_PROCEDURE() : 오류발생 프로시저나 트리거 이름을 알려주는 함수

5. 오류를 강제로 발생시키는 함수

  • RAISERROR, THROW
  • 오류의 심각도(0~18까지, 기본값은 16)
  • RAISERROR(메세지, 심각도, 상태)
  • THROW(메세지, 상태)
raiserror('오류발생', 16, 1);
throw 55555, '오류발생' ,1; --예외번호 5만~21억

THROW 값은 50000-2147483647 사이의 오류 번호를 지정해야 한다.

강의: ms sql 2014 제대로 배우기 2

0개의 댓글