Data/SQL Server

Transact-SQL(T-SQL) #5 - 프로그래밍

보노남편 2020. 10. 21. 21:54

1. T-SQL 프로그래밍

T-SQL은 DDL, DML 등 기본적인 SQL 구문뿐만 아니라 사용자가 원하는 결과를 만들 수 있도록 변수, 조건문, 반복문 등 많은 기능을 제공합니다.

 

 

2. 변수

1. 변수 선언

 - DECLARE 키워드를 사용하여 변수 선언을 명시합니다.

 - 변수명은 '@'로 시작합니다.

 - 변수명 뒤에는 변수의 데이터 형식을 선언해야 합니다.

 

다음은 변수 선언의 예시입니다.

위 소스는 이름이 @var1 이고 데이터형식은 INT인 변수를 선언하는 구문입니다.

 

 

2. 값 할당

 - SET 키워드를 사용하여 변수에 값을 할당합니다.

 

다음은 변수 선언의 예시입니다.

1. 에서 선언했던 @var1 변수에 데이터 1을 할당하는 구문입니다.

 

3. 값 출력

 - SELECT 혹은 PRINT 키워드로 값을 출력할 수 있습니다.

 - SELECT 키워드로 값을 출력할 경우 질의를 날려 응답받는 것과 같은 결과를 반환합니다.

 

 

 

 - PRINT 키워드로 값을 출력하면 SQL Server 상에서 메시지로 값을 출력합니다.

 

 

3. 조건문

1. IF, ELSE

 - 조건에 따라 분기하는 조건문입니다.

 - IF와 ELSE 키워드 다음에 실행되는 구문이 두 개 이상이라면 구문을 BEGIN과 END 키워드를 사용하여 감싸주어야 합니다. 하나의 구문만 있다면 BEGIN과 END를 꼭 사용하지 않아도 됩니다.

 

위 소스코드 실행결과 0이 출력되었습니다.

IF 절에서 비교하는 부분이 TRUE이기 때문에 @var2 에 0을 할당하고 @var2 의 갑을 출력한 후 종료되었습니다.

IF 절처럼 두 개 이상의 구문을 사용할 경우 꼭 BEGIN과 END로 감싸주어야 하고

ELSE 절처럼 하나의 구문이 실 될 때에는 BEGIN과 END를 생략할 수 있습니다.

 

2. IF 문, 여러 조건에 따라 분기

 - 조건이 두 개 이상이면 다음과 같이 IF, ELSE 구문을 중첩하여 사용합니다.

위 소스코드는 ELSE 이후 IF 절을 한 번 더 사용하여 3개의 분기 문을 만들었습니다.

실행한 결과 3이 출력되었습니다.

 

3. CASE

 - T-SQL은 여러 조건에 따라 분기할 수 있는 CASE 문을 제공합니다.

 - CASE 문은 실행 후 값 하나를 반환합니다.

 - WHEN 키워드 다음에 비교조건을 명시하고 THEN 키워드 뒤에 반환할 값을 입력합니다.

 

위 소스코드는 '2. IF, 여러 조건에 따라 분기'에 예시한 소스코드와 같은 기능을 수행합니다. IF, ELSE 구문이 중첩되는 것보다 간결해졌습니다.

CASE 문의 최종 반환 값은 2이며 이 값을 @var2 변수에 할당하고 출력하는 구조입니다.

 

 

4. 반복문

1. WHILE

 - T-SQL에서도 WHILE 문을 사용할 수 있습니다.

 - WHILE 키워드 다음에 조건을 명시합니다.

 - BREAK 키워드로 반복문을 도중에 종료할 수 있습니다.

 - CONTINUE 키워드를 사용해 비교 부분으로 이동할 수 있습니다.

 

10번 반복한 후 결과를 출력하는 소스코드입니다. IF 문과 같이 실행하는 구문이 두 개 이상일 경우 BEGIN과 END로 감싸주어야 합니다.

 

5. 예외처리

1. TRY, CATCH

 - T-SQL은 JAVA와 C#등의 언어에서 제공하는 TRY, CATCH 기능을 지원합니다.

위 소스코드의 경우 @var1 변수의 데이터 형식은 INT 인데 VARCHAR 데이터 형식의 값을 할당하려는 순간 런타임 에러가 발생하여 CATCH 절로 이동하였습니다.

 

이렇게 에러가 발생하여 프로그램이 중단되지 않도록 예외처리를 할 수 있습니다.

 

6. 마치며

이번 장에서는 T-SQL에서 지원하는 기본적인 프로그래밍 기능에 대해 알아보았습니다.

위 기능 말고도 GOTO 절 등 다양한 기능들이 있으니 꼭 찾아보시기 바랍니다.