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 절 등 다양한 기능들이 있으니 꼭 찾아보시기 바랍니다.
'Data > SQL Server' 카테고리의 다른 글
Transact-SQL(T-SQL) #4 - 저장 프로시저 (0) | 2020.10.21 |
---|---|
Transact-SQL(T-SQL) #3 - FILE TABLE (0) | 2020.10.21 |
Transact-SQL(T-SQL) #2 - FILESTREAM (0) | 2020.10.21 |
Transact-SQL(T-SQL) #1 - 데이터 형식 (0) | 2020.10.21 |
MSSQL? SQL SEVER? 차이점 (0) | 2020.10.21 |