본문 바로가기
데이터베이스

MySQL 동적sql

by 승환파크 2023. 5. 26.

sql문은 내용이 고정되어 있는 경우가 대부분이지만 상황에 따라 내용 변경이 필요할 때 동적 sql을 사용하면 변경되는 내용을 실시간으로 적용시켜 사용할 수 있다.

 

prepare와 execute

  • prepare : sql문을 실행하지 않고 미리 준비만 해둔다.
  • execute : 준비된 sql을 실행한다.

실행한 이후 다시 사용을 하지 않는다면 deallocate prepare로 문장을 해제할 수 있다.

prepare myQuery from 'select * from member where mem_id = "blk"';
execute myQuery; -- 실행이 필요한 시점에서 execute myQuery로 실행
deallocate prepare myQuery;

 

 

동적 sql의 활용

prepare문에서는 ?로 향후에 입력될 값을 비워두고, execute에서 using으로 ?에 값을 전달할 수 있다.

실시간으로 필요한 값들을 전달해서 동적으로 sql문이 실행되도록 할 수 있다.

 

동적 sql활용 예제

보안이 중요한 출입문에서 출입한 내역을 테이블에 기록하는데 이때 출입증을 태그하는 순간 날짜와 시간이 insert문으로 입력되도록 하는 sql문 작성하기

drop table if exists gate_table;
-- 출입기록용 테이블 생성
create table gate_table (
	id int auto_increment primary key,
    entry_time datetime
);

set @curDate = current_timestamp() -- 현재 날짜와 시간

-- ?를 사용해서 entry_time에 입력할 값을 비워둠
prepare myQuery from 'insert into gate_table values(null, ?)';
execute myQuery using @curDate; -- 앞에서 준비한 @curDate변수를 넣은 후 실행
deallocate prepare myQuery;

select * from gate_table;

'데이터베이스' 카테고리의 다른 글

MySQL 제약조건  (0) 2023.05.26
MySQL 테이블  (1) 2023.05.26
MySQL 프로그래밍  (0) 2023.05.26
MySQL 스토어드 프로시저  (1) 2023.05.25
MySQL 데이터 형 변환  (1) 2023.05.25