MSSQL - BEGIN ... END 블록 문법 (SQL 쿼리 흐름 제어)

 

BEGIN ... END

BEGIN ... END 란?

  • SQL문의 그룹을 실행 할 수 있또록 일련의 그룹화를 한 것
  • BEGIN 으로 시작하고 END로 끝내는 흐름 제어 언어 키워드

구문

BEGIN
	-- 쿼리문 혹은 쿼리 블럭
	SQL Query | SQL Query Block
END

특징

  • BEGIN ... END 블럭은 중첩 될 수 있음
    • 트랜잭션 사용시 BEGIN ... COMMIT(ROLLBACK)

사용 예시

  • 두 개의 중첩된 BEGIN ... END 블럭을 사용하여 SQL문 작성해보기
    • BEGIN COMMIT(ROLLBACK) 블럭 1 : 트랜잭션
      • a라는 변수가 0의 값을 가지고 있으면 저장된 DB 롤백
    • BEGIN END 블럭 2 : 제어문 (IF)
      • a라는 변수가 0의 값을 가지지 않으면 DB에 값 저장
-- 변수 a에 임의의 값(0) 입력
DECLARE @a INT
SET @a = 0

-- 트랜잭션 실행, TRANCOUNT=1
-- 값이 0이 아닐 때 DB 컬럼에 저장
BEGIN TRAN -- Begin Block 1
    INSERT INTO insertTable (val) values (@a)
    IF ( @a = 0 )
    	BEGIN -- Begin Block 2
            RAISERROR('Error : Data Rollback', 18, 1)
            ROLLBACK TRAN -- End Block 1-rollback
    	END -- Begin Block 2
COMMIT TRAN -- End Block 1-commit