상황에 따라 내용 변경이 필요할 때 동적 SQL 을 사용하면 변경되는 내용을 실시간으로 적용시켜 사용할 수 있다.

PREPAREEXECUTE

  1. PREPARE : SQL 문을 실행하지는 않고 미리 준비만 해둔다.
  2. EXECUTE : 준비한 SQL 문을 실행
  3. DEALLOCATE PREPARE : 실행 후 문장을 해제
USE market_db;
PREPARE myQuery FROM 'SELECT * FROM member WHERE mem_id = "BLK"';
EXECUTE myQuery;
DEALLOCATE PREPARE myQuery;

동적 SQL 의 활용

보안이 중요한 출입문에서 출입한 내역을 테이블에 기록해 놓는다. 이 때 출입증을 태그하는 순간의 날짜와 시간이 INSERT 문으로 만들어져서 입력되도록 해야 한다.

DROP TABLE IF EXISTS gate_table;
CREATE TABLE gate_table (id INT AUTO_INCREMENT PRIMARY KEY, entry_time DATETIME);

SET @curDate = CURRENT_TIMESTAMP();

PREPARE myQuery FROM 'INSERT INTO gate_table VALUES(NULL, ?);
EXECUTE myQuery USING @curDate;
DEALLOCATE PREPARE myQuery;

SELECT * FROM gate_table;

Untitled