절차형 SQL
- 연속적인 실행이나, 분기, 반복 등의 제어가 가능한 SQL
- 프로시저, 트리거, 사용자 정의 함수
트리거(Trigger)
- 데이터베이스 시스템에서 데이터의 입력, 수정, 삭제 등의 이벤트가 발생할 때마다 자동적으로 수행한다.
CREATE TRIGGER 트리거명 BEFORE/AFTER INSERT/UPDATE/DELETE // 트리거 정의
ON 테이블명 FOR EACH ROW
BEGIN
변경 전 (OLD.칼럼명) 또는 변경후(NEW.칼럼명)을 이용한처리
END
프로시저(Procedure)
- 특정 기능을 수행하는 일종의 트랜잭션 언어로, 호출을 통해 실행되어 미리 저장해 놓은 SQL 작업을 수행한다.
- 수행하는 절차가 목적이므로 처리 결과를 반환하지 않거나 한 개 이상의 값을 반환한다.
CREATE PROCEDURE 프로시저명(인자 인자형,...) // 저장 프로시저 정의
BEGIN
SQL 문장들
END
CALL 프로시저명(인자); // 저장프로시저 호출
DROP PROCEDURE 프로시저명; // 저장 프로시저 삭제
동적 쿼리
BEGIN
SET @variable = "variable";
SET @sql = "SELECT * FROM table WHERE field = ?";
PREPARE dquery FROM @Sql;
EXECUTE dquery USING @variable;
END
- PREPARE a FROM @b : b문을 대신할 a 변수를 만든다.
- EXECUTE a USING @b : b를 와일드 카드(? 부분)에 대입하여 a를 실행한다.
PROCEDURE `MAKE_HISTORY`(tablename varchar(64))
BEGIN
set @sql = concat('CREATE TABLE HISTORY_', tablename, ' LIKE CF_', tablename);
PREPARE stmt FROM @Sql;
EXECUTE stmt;
END
사용자 정의 함수
- 결과 도출이 목적이므로 return을 사용하여 단일 값을 반환한다.