728x90
a. MySQL에서 제공하는 프로그래밍 기능
b. SQL 문 여러 개를 하나로 묶어서 편리하게 사용할 수 있는 기능
- 즉, 쿼리 문을 모듈화시켜서 필요할 때마다 호출하여 사용
스토어드 프로시저의 특징
특징 | 설명 |
MySQL의 성능을 향상시킬 수 있음 |
a. 긴 코드로 구현된 코드를 실행할 경우, 클라이언트에서 서버로 모든 쿼리 텍스트들이 전송되어야 함 b. 긴 코드로 구현된 스포어드 프로시저가 있을 경우, 매개 변수 및 이름 정도만 서버로 보내면 됨 - 결과적으로 네트워크 부하가 줄어듬 |
유지 관리가 간편함 | a. C#이나 Java등의 클라이언트 응용 프로그램에서 직접 SQL 문을 작성하지 않고 스포어드 프로시저의 이름만 호출하도록 설정. - 데이터 베이스에 관한 스토어드 프로시저 내용을 일관적으로 수정/유지가능 |
모듈식 프로그래밍 가능 | a. 스토어드 프로시저로 저장해 놓은 퀴리의 수정, 삭제 등의 관리가 수월해짐 |
보안 강화 | 사용자 별로 테이블에 접근 권한을 주지 않고, 스토어드 프로시저에만 접근 권한을 줌으로써 보안을 강화할 수 있음 |
1. 스토어드 프로시저의 정의 형식
CREATE
[DEFINER = user]
PROCEDURE sp_name (proc_parameter[,...])
[characteristic ...] routine_body
proc_parameter:
[IN|OUT|INOUT] parameter type
characteristic:
COMMENT 'string'
| LANGUAGE SQL
| [NOT] DETERMINISTIC
| {CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA}
| SQL SECURITY { DEFINER | INVOKER }
routine_body:
Valid SQL routine statement
※ 스토어드 프로시저의 간단한 형식
DELIMITER $$
CREATE PROCEDURE <스토어드 프로시저 이름>
BEGIN
<이부분에 SQL 프로그래밍 코딩>
END $$
DELIMITER ;
CALL <스토어드 프로시저 이름>;
(1) DELIMITER $$ ~ END $$: 스토어드 프로시저의 코딩할 부분을 묶어줌
- MySQL의 종료문자는 세미콜론인데, PROCEDURE 안에서도 종료문자가 나오므로 어디까지가 스토어드 프로시저인지 알려줘야 함
(2) DELIMITER ;
- 종료 문자를 다시 세미콜론(;)으로 변경함
(3) CALL <스포어드 프로시저>;
- 생성된 스포어드 프로시저를 실행
1) 매개변수 사용
스토어드 프로시저에서는 실행 시에 사용되는 입력 매개 변수를 지정할 수 있음
(1) 입력 매개 변수 지정: IN 입력_매개변수_이름 데이터_형식
(2) 출력 매개 밴수 지정: OUT 출력_매개변수_이름 데이터_형식
728x90
댓글