반응형
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에 값 저장
- BEGIN COMMIT(ROLLBACK) 블럭 1 : 트랜잭션
-- 변수 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
반응형