SQL 스크립팅이란?
SQL 스크립팅(SQL Scripting) 은 Databricks SQL에서 변수, 조건문, 반복문, 예외 처리 를 포함한 절차적 프로그래밍을 가능하게 하는 기능입니다. 기존에는 Python이나 Scala로 작성해야 했던 복잡한 데이터 처리 로직을 SQL만으로 구현 할 수 있습니다.💡 비유: 일반 SQL이 “단일 명령”이라면, SQL 스크립팅은 “여러 명령을 순서대로 실행하는 프로그램”입니다. 마치 저장 프로시저(Stored Procedure)를 작성하는 것과 비슷합니다.
DECLARE 변수 선언
기본 변수 선언
쿼리 결과로 변수 할당
변수 타입
| 타입 | 예시 | 설명 |
|---|---|---|
INT / BIGINT | DECLARE count INT DEFAULT 0 | 정수형 |
DECIMAL(p,s) | DECLARE amount DECIMAL(12,2) | 고정 소수점 |
DOUBLE | DECLARE ratio DOUBLE | 부동 소수점 |
STRING | DECLARE name STRING DEFAULT '' | 문자열 |
DATE | DECLARE d DATE DEFAULT CURRENT_DATE() | 날짜 |
TIMESTAMP | DECLARE ts TIMESTAMP | 타임스탬프 |
BOOLEAN | DECLARE flag BOOLEAN DEFAULT TRUE | 불리언 |
SET 문
변수에 값을 할당하거나 Spark 설정을 변경합니다.IF / ELSEIF / ELSE
기본 조건문
WHILE 루프
기본 반복문
동적 테이블 처리
예외 처리 (SIGNAL)
SIGNAL로 사용자 정의 오류 발생
SQLSTATE 코드
| SQLSTATE | 의미 | 사용 시나리오 |
|---|---|---|
'45000' | 사용자 정의 일반 오류 | 비즈니스 규칙 위반 |
'45001' | 데이터 품질 오류 | 데이터 검증 실패 |
'45002' | 환경 설정 오류 | 필수 설정 누락 |
BEGIN ATOMIC 트랜잭션
여러 테이블에 걸친 원자적 트랜잭션 을 수행합니다. 모든 작업이 성공하거나, 하나라도 실패하면 전체가 롤백됩니다.트랜잭션 규칙
| 규칙 | 설명 |
|---|---|
| 원자성 | 모든 문이 성공하거나, 전부 롤백됩니다 |
| 지원 대상 | Unity Catalog 관리형 테이블만 지원합니다 |
| 중첩 불가 | 트랜잭션 내에 트랜잭션을 중첩할 수 없습니다 |
| DDL 제한 | CREATE/ALTER/DROP 등 DDL 문은 트랜잭션 내에서 사용할 수 없습니다 |
저장 프로시저 패턴
SQL 스크립팅의 모든 기능을 조합하여 재사용 가능한 프로시저 패턴을 구현할 수 있습니다.데이터 품질 검증 프로시저
정리
| 기능 | 구문 | 핵심 포인트 |
|---|---|---|
| 변수 선언 | DECLARE ... DEFAULT ... | 타입과 기본값을 지정하여 변수를 선언합니다 |
| 값 할당 | SET var = expr | 리터럴, 표현식, 쿼리 결과로 할당합니다 |
| 조건문 | IF / ELSEIF / ELSE / END IF | 조건에 따라 다른 SQL을 실행합니다 |
| 반복문 | WHILE ... DO ... END WHILE | 조건이 만족하는 동안 반복 실행합니다 |
| 예외 처리 | SIGNAL SQLSTATE | 사용자 정의 오류를 발생시킵니다 |
| 트랜잭션 | BEGIN ATOMIC ... END | 여러 DML을 원자적으로 실행합니다 |